创建自定义操作符教程


这是一个教程,介绍如何从流程中创建自定义操作符,并将其放入新的扩展中。
确保您已经从Marketplace安装了Custom Operators扩展,并且您正在使用Java开发工具包(JDK),而不仅仅是Java运行时引擎(JRE)。JRE不包含必要的工具。
操作者将自动优化决策树,并返回优化后的决策树作为模型及其验证结果。
在存储库中创建一个文件夹结构来存储新的扩展和操作流程。
第一个算子被称为“优化决策树”。在扩展子文件夹中以该名称保存一个新进程。(文件夹名称是任意的,这就是我如何组织我的扩展。)
让我们使用一个示例示例作为流程的输入(如果您还没有在View/Show panel菜单中激活Context面板)。(稍后我们将删除此内容,但我们需要数据来测试该过程。)我们选Iris(很有创意,我知道)。
这个过程是这样的。注意,输入连接器是“填充”的,因为在流程上下文中指定了数据输入。优化参数的模型输出是该过程的第一个输出。
优化参数内部有一个决策树的交叉验证。
然后用一些参数组合建立了优化参数。这将尝试许多组合,因此在大型数据集上速度很慢。(1728种组合* 11种模型(因为10倍交叉验证)需要一段时间。)
您可以随意尝试不同的数据集,并可能减少要测试的组合数量。
测试流程并确保它按预期工作。当将Iris更改为过程上下文中的劳动谈判和声纳时,它也应该起作用。彻底的测试很重要!
测试完流程后,是时候创建一个新的自定义操作符了。为此,请删除流程上下文中的测试输入!
在硬盘上创建一个新文件夹(而不是在RapidMiner存储库中!)此文件夹将包含进入新扩展的所有操作符。在这个文件夹中,我建议保存一个文件inputs.txt(名称是任意的),以记录Custom Operator窗口的输入。您不希望每次保存操作符过程的新版本时都重新键入整个描述!
现在选择File / Create Custom Operator。(如果您没有此菜单项,请检查是否正确安装了Custom Operators扩展。)
在相应的文本框中输入数据。这里我们选择两个公开的参数,优化参数中的log_all_criteria和交叉验证中的number_of_folds。设置表单后,单击Save并选择要将自定义操作符文件放入其中的硬盘上的文件夹。
通过单击Extensions / Create Custom extension创建扩展。
确保选择保存自定义操作符的正确文件夹。您也可以为您的扩展选择一种颜色,它将适用于此扩展中的每个操作员。如果您想与其他人共享您的扩展,那么激活Force依赖是一个好主意。
只有当扩展使用应该包含在扩展中的外部软件库时,才需要jar文件夹。通常情况下并非如此。
单击OK。现在,RapidMiner将工作一段时间,然后询问您是否要重新启动新的扩展。重启后,你会看到新的扩展:
它具有创建自定义操作符时指定的图标。操作符提供所选参数:
创建一个带有运算符的测试过程并将其应用于多个示例集是一个好主意。
在使用自定义操作符执行流程时,有一个令人惊讶的发现:当我们开发原始流程时,可以看到来自参数优化的日志表。现在不是。似乎Custom Operators扩展没有公开流程日志。这也意味着参数“记录所有标准”不做任何事情。我们会在下次创建自定义操作符时移除那个参数。
现在我们已经看到,运算符在中型或大型数据集上花费了很多时间,所以我们想创建一个选项,通过减少参数组合的数量来加快运算速度。
首先,我们从自定义操作符扩展中添加一个Category Parameter宏操作符,并在其中定义“fast”和“slow”选项。我们将这个宏命名为“速度”。
我们还需要像前面一样公开参数number_of_folds。但是,这里有两个交叉验证,因此我们希望设置一个宏来从一个源配置这两个验证。所以我们使用Set Macro作为一个简单的参数输入。
我们创建一个分支来根据速度宏值执行优化。
Fast优化运算符设置了较少的组合,因此它可能不会像慢速优化运算符那样找到最佳选项,但它会快得多。
参数优化中的交叉验证现在使用%{folds}宏。
这就是设置新参数的方式:
将自定义操作符保存在与之前相同的文件夹中,并使用与之前相同的设置重新创建扩展。
当您创建扩展的新版本时,请确保输入与以前相同或更高的版本号。RapidMiner将加载最新版本的扩展,这就是你想要使用的。
测试新流程显示更新后的操作员参数:
恭喜你!您已经学习了如何从RapidMiner进程创建自定义操作符。
评论
Harshit
例如,如果我想要一个运算符来执行输入a和b的加法,但我想定义一个运算符来改变输入中的一些东西,假设我想给出一些参数,给定输入a的值2or3,它将是2X或3X,我们如何使用python定义参数。
斯科特
不,不幸的是,这是不可能与此扩展。
问候,
Balazs