类别

版本

自定义操作符

在本页中,我们将解释如何将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_trainrm_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_trainrm_apply.顾名思义,第一个将在您在Python Forecaster操作符中训练模型时运行。第二个将在Python Forecaster创建的模型被应用于应用预测操作符。因此,这个操作符生成一个Python Forecast模型,该模型与RapidMiner的Apply Forecast操作符兼容。

Python预报员操作符的参数与Python的学习者操作符,它允许您:

  • 修改JSON配置;
  • 修改Python脚本,
  • 拯救操作员,
  • 使用不同的环境,
    1. Python二进制,
    2. 虚拟环境,
    3. 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或更高版本,因此每个用户也必须安装该扩展。