创建自定义操作符教程

BalazsBaranyBalazsBarany 管理员,版主,员工,RapidMiner认证分析师,RapidMiner认证专家职位:873独角兽
2020年3月编辑 知识库

本教程介绍如何从流程创建自定义操作符,并将其放入新的扩展中。

确保您已经从市场安装了自定义操作符扩展,并且您正在使用Java开发工具包(JDK),而不仅仅是Java运行时引擎(JRE)。JRE不包含必要的工具。

操作员将自动优化决策树,并返回优化后的决策树作为模型及其验证结果。

在存储库中创建一个文件夹结构,以存储新的扩展名和操作符进程。


第一个操作符被称为“优化决策树”。在扩展子文件夹中以该名称保存一个新进程。(文件夹名称是任意的,这是我如何组织我的扩展。)

让我们使用设置为流程输入的示例示例(如果您还没有在View/Show panel菜单中激活Context面板)。(我们稍后将删除它,但我们需要数据来测试这个过程。)我们要用虹膜(非常有创意,我知道)。


这是整个过程的样子。注意,输入连接器是“填充的”,因为在流程上下文中输入了指定的数据。优化参数的模型输出是流程的第一个输出。


在优化参数中有一个决策树的交叉验证。


然后我们用一些参数组合来设置优化参数。这将尝试大量的组合,所以在大型数据集上会很慢。(1728个组合* 11个模型(由于10倍交叉验证)需要一段时间。)


请随意尝试不同的数据集,并尽可能减少要测试的组合数量。

测试该过程并确保它按预期工作。当在流程上下文中将Iris更改为Labor Negotiations和Sonar时,它也应该工作。彻底的测试很重要!

在测试流程之后,是时候创建一个新的自定义操作符了。为此,在流程上下文中删除测试输入!

在硬盘上创建一个新文件夹(不是在RapidMiner存储库中!)此文件夹将包含进入新扩展的所有操作符。在这个文件夹中,我建议保存一个文件outputs .txt(名称是任意的),用来记录自定义操作符窗口的输入。您不希望每次保存操作符进程的新版本时都再次输入整个描述!

现在选择文件/创建自定义操作符。(如果您没有这个菜单项,请检查Custom Operators扩展是否正确安装。)


在适当的文本框中输入数据。这里我们选择了两个公开的参数,优化参数中的log_all_criteria和交叉验证中的number_of_folds。表单设置完成后,单击“保存”并选择硬盘上的文件夹,将自定义操作符文件放入其中。


通过单击Extensions / Create Custom extension创建扩展。


确保选择了保存自定义操作符的正确文件夹。你也可以为你的扩展选择一个颜色,它将适用于这个扩展中的每个操作符。如果你想与他人共享你的扩展,激活Force依赖是个好主意。

如果您的扩展使用应该包含在扩展中的外部软件库,则只需要jar文件夹。通常情况并非如此。

单击OK。现在,RapidMiner将工作一段时间,然后询问是否要重新启动新的扩展。重启后,你会看到新的扩展:


它具有在创建自定义操作符时指定的图标。操作符提供所选参数:


使用操作符创建测试过程并将其应用于多个示例集是个好主意。


在使用自定义操作符执行流程时,会有一个惊喜:当我们开发原始流程时,参数优化的日志表是可见的。现在不是了。Custom Operators扩展似乎没有公开流程日志。这也意味着参数“log all criteria”不做任何事情。所以我们会在下次创建自定义操作符时删除这个形参。

现在我们已经看到运算符在中型或大型数据集上花费了大量时间,所以我们想创建一个选项,通过减少参数组合的数量来提高运算速度。

首先,我们从自定义操作符扩展中添加一个类别参数宏操作符,并在那里定义“快”和“慢”选项。我们将这个宏命名为“speed”。

我们还需要像以前一样公开参数number_of_folds。但是,我们在这里有两个交叉验证,所以我们希望将宏设置为从一个源同时配置两个。所以我们使用Set Macro作为简单的参数输入。


我们创建一个分支来根据speed宏值执行优化。

快速优化操作符设置的组合数量较少,因此它可能不会像慢速优化操作符那样找到最佳选项,但它会快得多。

参数优化中的交叉验证现在用于%{folds}宏。

这就是新参数的设置:


将自定义操作符保存在与以前相同的文件夹中,并使用与以前相同的设置重新创建扩展。

当您创建扩展的新版本时,请确保输入与以前相同或更高的版本号。RapidMiner将加载扩展的最新版本,这就是你想要使用的。

测试新进程会显示更新后的操作符参数:


恭喜你!您已经学习了如何从RapidMiner进程创建自定义操作符。

varunm1 hbajpai sgenzer jmergler yyhuang kayman Jasmine_ IngoRM gmeier Pavithra_Rao (删除用户) Tripartio

评论

  • hbajpaihbajpai 成员职位:102独角兽
    BalazsBarany.我也计划创建一些,等待9.6版本,这样我就可以使用Python构建操作符并将它们包装到扩展中。我真的很兴奋。
    最好的
    Harshit
    BalazsBarany Jasmine_ IngoRM
  • pallavpallav 成员职位:39因素二世
    @sgenzer-目前是否存在“Python操作符框架”。我能够使用python脚本创建一个新的操作符,但不知道如何添加参数。
    例如,如果我想要一个操作符来执行输入a和b的添加,但我想定义一个操作符来改变输入中的某些东西,假设我想给一些参数,将2X或3X给定2or3输入a的值。如何使用python定义参数。
  • sgenzersgenzer 12管理员,版主,员工,RapidMiner认证分析师,社区管理员,成员,大学教授,PM版主职位:2959年社区经理
    @pallavPython操作符框架仍处于测试阶段。联系@bhupendra_patil

    斯科特
    (删除用户)
  • anaRodriguesanaRodrigues 成员职位:33因素二世
    @BalazsBarany这可以用来创建带有子进程的超级运算符吗?
  • BalazsBaranyBalazsBarany 管理员,版主,员工,RapidMiner认证分析师,RapidMiner认证专家职位:873独角兽
    @anaRodrigues

    不,不幸的是,这个扩展是不可能的。

    问候,
    Balazs
    anaRodrigues
登录注册置评。