自定义操作符
在本页中,我们将解释如何将Python代码嵌入到RapidMiner进程中Python的学习者,Python变压器和Python预报员操作符。然后你就可以共享这些自定义操作符和其他不擅长Python编程的人一起。
Python学习者操作符
与Python的学习者,您可以创建一个基于Python的模型,该模型与RapidMiner的模型接口兼容。使用Python Learner(以及从它派生的自定义操作符)创建的模型可以使用Apply Model操作符进行应用,可以使用RapidMiner的Cross-Validation操作符进行训练,可以使用Optimize操作符进行微调,等等。
当你从操作员面板中拖动一个新的Python学习者到画布是RapidMiner Studio时,你会得到一个类似于其他学习者的操作员(在操作员颜色和输入/输出端口)。它还将有一些您可以编辑的预定义参数。看到支持的参数类型列表在下面。
操作员信息面板还显示了这个基于Python的学习器的功能。
要编辑参数定义和功能,请单击Parameters面板上的齿轮图标。将出现一个JSON编辑器,您可以在其中添加和修改这些特征。您在这里编写的JSON将被验证,如果有不正确的内容,您将得到警告。如果应用不正确的配置,则输入端口将从画布上的操作符中消失。
要实现Python学习器,需要定义两个函数rm_train
和rm_apply
.顾名思义,第一个将在您在Python学习者操作符中训练模型时运行。第二个将在使用Python Learner创建的模型应用于例如Apply model时运行。我们建议您学习所提供的教程过程,以获得有关如何实现这些函数的更多提示。
Python Transformer操作符
您可以将Python Transformer视为具有用户定义参数和任意数量的输入和输出端口的Execute Python操作符。
通过单击操作符参数面板中的齿轮图标,并在弹出的编辑器中编辑JSON定义,可以定义操作符的名称、参数及其类型和默认值,以及输入和输出端口。这与上面解释的Python学习者操作符非常相似(Transformer不接受列表)功能
,但这需要输入
和输出
)。您在这里编写的JSON将被验证,如果有不正确的内容,您将得到警告。如果应用不正确的配置,则输入端口将从画布上的操作符中消失。看到支持的参数类型列表在下面。
为了使代码按预期执行,您必须遵循与execute Python相同的约定:您的主要入口点将是rm_main
函数,函数参数和返回值的数量和顺序将对应于操作员的输入和输出端口。
如果基于Python Transformer的自定义操作符需要多个输入和输出,则必须使用输入
和输出
JSON定义的一部分。习惯于执行Python动态端口的用户可能会发现这并不直观。
当您将一个新的Python Transformer拖到画布上时,示例参数配置和代码将包含上述所有提示。
Python预报操作符
注意:Python预报员只有操作员可用从9.10.2版开始.
与Python预报员操作符,您可以创建类似于RapidMiner Studio的时间序列操作符的预测模型。它也兼容应用预测操作符。
当您将新的Python预报员从RapidMiner Studio的操作员面板拖动到画布时,您将获得类似于Python学习者操作员的操作员(操作员颜色和输入/输出端口)。它还将具有一些预定义的参数。你也可以额外添加参数
,输入
和输出
.看到支持的参数类型列表和可配置输入/输出端口在下面。
要实现Python Forecaster,需要定义两个函数rm_train
和rm_apply
.顾名思义,第一个将在您在Python Forecaster操作符中训练模型时运行。第二个将在Python Forecaster创建的模型被应用于应用预测操作符。因此,这个操作符生成一个Python Forecast模型,该模型与RapidMiner的Apply Forecast操作符兼容。
Python预报员操作符的参数与Python的学习者操作符,它允许您:
- 修改JSON配置;
- 修改Python脚本,
- 拯救操作员,
- 使用不同的环境,
- Python二进制,
- 虚拟环境,
- conda环境。
但是有一些额外的参数在Python学习者中没有定义。这些都是:
- timeseries属性能够选择预测什么;
- 有指标:允许用户选择数据是否有索引,
- 指标属性:能够选择索引列,
- 排序时间序列:如果数据没有排序,则可以排序。
默认情况下,有两个隐藏参数可以帮助在Python脚本中使用timeseries属性和索引。这两个额外的参数是:
- series_name,
- index_name.
可以通过以下方式从Python脚本访问它们:
Index_name = parameters[' Index_name '] series_name = parameters['series_name']
有关更多示例,请查看教程过程。
支持的参数类型
的支持参数类型列表Python的学习者,Python变压器和Python预报员可以用在参数
您的操作符参数配置JSON列表:
输入JSON | 参数出现 |
---|---|
字符串 | 文本框中的字符串 |
类别 | 单一选择下拉 |
布尔 | 复选框 |
整数 | 文本框中的整数 |
真正的 | 文本框中的浮点数 |
每个参数定义都有以下属性,它们由描述参数的元组中的键值对表示:
属性 | 强制性的吗? | 描述 |
---|---|---|
名字 | 是的 | 操作员参数面板上显示的参数名称 |
类型 | 是的 | 参数类型(有关支持的类型,请参见上表) |
类别 | 仅当type为类别 |
参数下拉菜单中显示的选项,按照用户提供的顺序显示。必须是一个值列表。 |
可选 | 没有 | 如果设置为true,则即使参数值为空,也将执行操作符 |
价值 | 仅当optional为假 或未提供 |
参数的默认值 |
以下是上述参数定义的一些示例:
"parameters": [{"name": "1st_parameter", "type": "string", "optional": true}, {"name": "2nd_parameter", "type": "integer", "value": " 100}, {"name": "3rd_parameter", "type": "category", "categories": ["category A", "category B", "category C", "Default category"], "value": "Default category"}, {"name": "4th_parameter", "type": "boolean"}, {"name": "5th_parameter", "type": "real", "value": 3.1415}, {"name": "6th_parameter", "type": "string", "optional": true}]
用户可配置输入和输出端口
注:仅提供可配置输入输出端口功能从9.10.2版开始.
用户可以为…定义额外的输入和输出端口Python的学习者,Python变压器和Python预报员.要做到这一点,你必须添加元素,JSON对象
,到…数组
的输入
或输出
在可编辑JSON配置中。
下面是一些额外输入的例子:
“输入”:[{“name”:“额外输入1”,“type”:“table”},{“name”:“额外输入2”,“type”:“table”}]
以下是一些额外输出端口的示例:
"outputs": [{"name": "附加输出1","type": "table"}, {"name": "附加输出2","type": "table"}]
要使用前面添加的端口,请检查以下部分。您还可以在Python Forecaster操作符的教程过程中找到示例。
如何使用用户可配置的输入端口
扩展输入数组后,用户定义的输入端口可以从rm_train
方法。的rm_train
调用时带有*输入
参数,其中包括额外的输入端口。所以,如果你给rm_train ()
方法定义,您将能够到达输入。
下面是Python学习者的一个例子:
新定义有两个额外的输入:rm_train(X, y, additional_input_1, additional_input_2, parameters)
下面是Python Forecaster的一个例子:
新定义有两个额外的输入:rm_train(index, series, additional_input_1, additional_input_2, parameters)
如何使用用户可配置的输出端口
扩展输出数组后rm_train
方法可以将数据传输到用户定义的输出端口。的rm_train
方法返回一个模型,对象,你想传递给rm_apply
方法。在返回
语句总是第一个对象将被传递到rm_apply
方法时,额外的输出端口将被传输到额外的输出端口。这些数据应该是熊猫
DataFrames
.
下面是一个返回模型的例子:
新定义的两个额外的输出:返回模型,additional_output_1, additional_output_2
一个额外的返回对象的例子:
#原来的返回语句:return {'model': model} #新的定义有两个额外的输出:return {'model': model}, additional_output_1, additional_output_2
自定义Python操作符中的环境处理
与Execute Python操作符类似,您可以取消选中use默认Python参数并指定要使用的环境。在Python学习者的情况下,模型应用程序将使用用于训练的相同环境来完成。
如果模型应用程序在另一台机器上完成(例如在RapidMiner AI Hub上),请确保具有相同名称的相同Python环境可用,否则您的执行将失败或产生不想要的结果。
共享和分发自定义运营商
当你对你创建的学习者、变形者或预测者的行为感到满意时,下一步可以与项目中的其他人分享它。所有的算子都有a保存按钮上的参数面板。
单击Save时,然后在项目或存储库中指定一个位置.pyop
描述符文件将被创建。
然后用户可以拖动它.pyop
文件到画布在RapidMiner Studio,学习者或变压器包含所有的代码和参数定义将被创建,使用您提供的自定义操作符的名称。此操作符将不可编辑,这确保您之前编写的代码将以与预期相同的方式执行(前提是它使用的Python环境存在于运行RapidMiner进程的机器上)。
这种共享方法的一个缺点是不能在操作符之后更新操作符.pyop
描述符已被拖到画布上,并在此基础上创建了一个新的操作符。如果需要确保这些操作符得到更新,则需要将自定义操作符作为扩展分发。要做到这一点,右键单击包含您的.pyop
文件,然后点击创建扩展……在出现的对话框中输入详细信息。您还将得到一个自定义操作符列表,这些操作符将被编译到您的新扩展中。单击“创建扩展”。
扩展创建后,您可以将其作为任何其他扩展分发。当您想要更新您的操作符时,您可以创建一个新版本的扩展并将其重新分发给所有用户。
注意:创建的扩展将依赖于Python脚本扩展9.9或更高版本,因此每个用户也必须安装该扩展。