2017-05-15 59 views
1

對不起,我對RapidMiner是全新的,只做了基本的教程。快速礦工行最大值

我有一個像

MatchID Value1 Value2 Value3 
1   5  1  2 
1   4.5  1.5  2 
... 

的數據集,並想知道是否有possibilty讓每列的最高值(例如值1),並進一步計算它(生成屬性)。

謝謝。

回答

3

它有很多種方法。這裏有一個使用Aggregate算子查找最大值,Join加入此原始和Generate Attributes做一些計算。

<?xml version="1.0" encoding="UTF-8"?><process version="7.2.003"> 
    <context> 
    <input/> 
    <output/> 
    <macros/> 
    </context> 
    <operator activated="true" class="process" compatibility="7.2.003" expanded="true" name="Process"> 
    <process expanded="true"> 
     <operator activated="true" class="retrieve" compatibility="7.2.003" expanded="true" height="68" name="Retrieve Iris" width="90" x="45" y="34"> 
    <parameter key="repository_entry" value="//Samples/data/Iris"/> 
     </operator> 
     <operator activated="true" class="aggregate" compatibility="7.2.003" expanded="true" height="82" name="Aggregate" width="90" x="179" y="34"> 
    <parameter key="use_default_aggregation" value="true"/> 
    <parameter key="default_aggregation_function" value="maximum"/> 
    <list key="aggregation_attributes"/> 
     </operator> 
     <operator activated="true" class="join" compatibility="7.2.003" expanded="true" height="82" name="Join" width="90" x="313" y="34"> 
    <parameter key="join_type" value="outer"/> 
    <parameter key="use_id_attribute_as_key" value="false"/> 
    <list key="key_attributes"/> 
     </operator> 
     <operator activated="true" class="generate_attributes" compatibility="7.2.003" expanded="true" height="82" name="Generate Attributes" width="90" x="447" y="34"> 
    <list key="function_descriptions"> 
     <parameter key="deltaA1" value="[maximum(a1)]-a1"/> 
     <parameter key="deltaA2" value="[maximum(a2)]-a2"/> 
     <parameter key="deltaA3" value="[maximum(a3)]-a3"/> 
     <parameter key="deltaA4" value="[maximum(a4)]-a4"/> 
    </list> 
     </operator> 
     <connect from_op="Retrieve Iris" from_port="output" to_op="Aggregate" to_port="example set input"/> 
     <connect from_op="Aggregate" from_port="example set output" to_op="Join" to_port="left"/> 
     <connect from_op="Aggregate" from_port="original" to_op="Join" to_port="right"/> 
     <connect from_op="Join" from_port="join" to_op="Generate Attributes" to_port="example set input"/> 
     <connect from_op="Generate Attributes" from_port="example set output" 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> 
0

另一種方法是使用Extract Macro運營商與statistics設置max。這將給定屬性的最大值存儲爲宏值,然後可以使用該宏值。在Generate Attributes

優點是您不需要修改原始數據集,也不必使用joinmultiply運算符。

<?xml version="1.0" encoding="UTF-8"?><process version="7.5.000"> 
    <context> 
    <input/> 
    <output/> 
    <macros/> 
    </context> 
    <operator activated="true" class="process" compatibility="7.5.000" expanded="true" name="Process"> 
    <process expanded="true"> 
     <operator activated="true" class="retrieve" compatibility="7.5.000" expanded="true" height="68" name="Retrieve Iris" width="90" x="45" y="34"> 
     <parameter key="repository_entry" value="//Samples/data/Iris"/> 
     </operator> 
     <operator activated="true" class="extract_macro" compatibility="7.5.000" expanded="true" height="68" name="Extract Macro" width="90" x="179" y="34"> 
     <parameter key="macro" value="maxA1"/> 
     <parameter key="macro_type" value="statistics"/> 
     <parameter key="statistics" value="max"/> 
     <parameter key="attribute_name" value="a1"/> 
     <list key="additional_macros"/> 
     <description align="center" color="transparent" colored="false" width="126">extract maximum of attribute a1 and store it in a macro</description> 
     </operator> 
     <operator activated="true" class="generate_attributes" compatibility="7.5.000" expanded="true" height="82" name="Generate Attributes" width="90" x="313" y="34"> 
     <list key="function_descriptions"> 
      <parameter key="DifferenceA1" value="parse(%{maxA1})-a1"/> 
     </list> 
     <description align="center" color="transparent" colored="false" width="126">calculate the difference of a1 from the maximum using the macro value</description> 
     </operator> 
     <connect from_op="Retrieve Iris" from_port="output" to_op="Extract Macro" to_port="example set"/> 
     <connect from_op="Extract Macro" from_port="example set" to_op="Generate Attributes" to_port="example set input"/> 
     <connect from_op="Generate Attributes" from_port="example set output" 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> 

提示:因爲宏值存儲爲文本,你首先要parse他們使用自己的數值。

0

第三個選項是Sort示例集,並且僅使用Filter Example Range運算符將示例保留爲最大值。這很方便,如果您最感興趣的是其他屬性的值,那麼當某個屬性最大時。

<?xml version="1.0" encoding="UTF-8"?><process version="7.5.000"> 
    <context> 
    <input/> 
    <output/> 
    <macros/> 
    </context> 
    <operator activated="true" class="process" compatibility="7.5.000" expanded="true" name="Process"> 
    <process expanded="true"> 
     <operator activated="true" class="retrieve" compatibility="7.5.000" expanded="true" height="68" name="Retrieve Iris" width="90" x="45" y="34"> 
     <parameter key="repository_entry" value="//Samples/data/Iris"/> 
     </operator> 
     <operator activated="true" class="sort" compatibility="7.5.000" expanded="true" height="82" name="Sort" width="90" x="179" y="34"> 
     <parameter key="attribute_name" value="a1"/> 
     <parameter key="sorting_direction" value="decreasing"/> 
     <description align="center" color="transparent" colored="false" width="126">sorting the example set on a1 decreasing</description> 
     </operator> 
     <operator activated="true" class="filter_example_range" compatibility="7.5.000" expanded="true" height="82" name="Filter Example Range" width="90" x="313" y="34"> 
     <parameter key="first_example" value="1"/> 
     <parameter key="last_example" value="1"/> 
     <description align="center" color="transparent" colored="false" width="126">only keeping the first example, which has the maximum for a1</description> 
     </operator> 
     <connect from_op="Retrieve Iris" from_port="output" to_op="Sort" to_port="example set input"/> 
     <connect from_op="Sort" from_port="example set output" to_op="Filter Example Range" to_port="example set input"/> 
     <connect from_op="Filter Example Range" from_port="example set output" 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>