【发布时间】:2017-02-23 22:01:40
【问题描述】:
我想反转表中一组属性的分数。我已经选择了属性并将它们发送到“循环属性”函数。在函数中,我指定了“生成属性”。对于每个属性,我想将其放在分母中,如下所示:1/[Attribute]。看来我必须在公式中指定一个属性名称。是否有我缺少的通配符选项?还有其他解决方案吗?
【问题讨论】:
标签: loops attributes rapidminer
我想反转表中一组属性的分数。我已经选择了属性并将它们发送到“循环属性”函数。在函数中,我指定了“生成属性”。对于每个属性,我想将其放在分母中,如下所示:1/[Attribute]。看来我必须在公式中指定一个属性名称。是否有我缺少的通配符选项?还有其他解决方案吗?
【问题讨论】:
标签: loops attributes rapidminer
您要查找的通配符是参数属性名称宏。 这个宏(类似于流程变量)可以在 Generate Attributes Operator 中构建所需的函数表达式,就像我在下面的附加流程中所做的那样(只需将 xml 文件复制并粘贴到 RapidMiner 内的流程中)。 使用 Loop Attribtes 时请注意 RapidMiner 7.4 的新选项,其中可以重用当前的 ExampleSet 或为每次迭代返回带有单个示例集的集合。
有关宏的更多详细信息,请查看此处:
http://community.rapidminer.com/t5/RapidMiner-Studio-Knowledge-Base/How-to-Use-Macros/ta-p/32966
%{macro} 和 eval(%{macro}) 之间的区别尤其重要。
示例流程:
<?xml version="1.0" encoding="UTF-8"?><process version="7.4.000">
<context>
<input/>
<output/>
<macros/>
</context>
<operator activated="true" class="process" compatibility="7.4.000" expanded="true" name="Process">
<process expanded="true">
<operator activated="true" class="generate_data" compatibility="7.4.000" expanded="true" height="68" name="Generate Data" width="90" x="112" y="85"/>
<operator activated="true" class="concurrency:loop_attributes" compatibility="7.4.000" expanded="true" height="82" name="Loop Attributes" width="90" x="313" y="85">
<parameter key="reuse_results" value="true"/>
<parameter key="enable_parallel_execution" value="false"/>
<process expanded="true">
<operator activated="true" class="generate_attributes" compatibility="7.4.000" expanded="true" height="82" name="Generate Attributes" width="90" x="380" y="34">
<list key="function_descriptions">
<parameter key="%{loop_attribute}_new" value="1/eval(%{loop_attribute})"/>
</list>
</operator>
<connect from_port="input 1" to_op="Generate Attributes" to_port="example set input"/>
<connect from_op="Generate Attributes" from_port="example set output" to_port="output 1"/>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="source_input 2" spacing="0"/>
<portSpacing port="sink_output 1" spacing="0"/>
<portSpacing port="sink_output 2" spacing="0"/>
</process>
</operator>
<connect from_op="Generate Data" from_port="output" to_op="Loop Attributes" to_port="input 1"/>
<connect from_op="Loop Attributes" from_port="output 1" to_port="result 1"/>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="sink_result 1" spacing="0"/>
<portSpacing port="sink_result 2" spacing="0"/>
</process>
</operator>
</process>
【讨论】: