🎉Community Raffle - Win $25

An exclusive raffle opportunity for active members like you! Complete your profile, answer questions and get your first accepted badge to enter the raffle.
Join and Win

"Looping over an Operator"

User: "Rick_V"
New Altair Community Member
Updated by Jocelyn
Hello there :)

I'm new to RapidMiner and had a question, regarding looping. I searched the web but couldn't find a solution...

What I want to do is, for a specific Log, use a Control-Flow Miner (like the Alpha Algorithm Miner) but also add noise to the log. I want to add noise on different percentages, 0%, 10%, 20%...100%, so for each 'Noise Type' i want to have 11 different outcomes. I don't know how to loop this operation... Can someone help me? It is very inefficient do create 11 different paths... And keep changing stuff around.

I added my process in this image: image

Find more posts tagged with

Sort by:
1 - 1 of 11
    hi,

    Loop Values is your friend. Sadly you need to use a remember recall construct.
    The attached process show the procedure. It's annotated which should help.

    ~Martin

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <process version="6.4.000">
      <context>
        <input/>
        <output/>
        <macros/>
      </context>
      <operator activated="true" class="process" compatibility="6.4.000" expanded="true" name="Process">
        <process expanded="true">
          <operator activated="true" class="generate_data" compatibility="6.4.000" expanded="true" height="60" name="Generate Data (2)" width="90" x="246" y="390">
            <parameter key="attributes_lower_bound" value="0.0"/>
            <parameter key="attributes_upper_bound" value="100.0"/>
          </operator>
          <operator activated="true" class="remember" compatibility="6.4.000" expanded="true" height="60" name="Remember" width="90" x="380" y="390">
            <parameter key="name" value="tempObject"/>
          </operator>
          <operator activated="true" class="subprocess" compatibility="6.4.000" expanded="true" height="76" name="Subprocess" width="90" x="45" y="165">
            <process expanded="true">
              <operator activated="true" class="generate_data" compatibility="6.4.000" expanded="true" height="60" name="Generate Data" width="90" x="45" y="30">
                <parameter key="number_examples" value="10"/>
              </operator>
              <operator activated="true" class="generate_id" compatibility="6.4.000" expanded="true" height="76" name="Generate ID" width="90" x="179" y="30"/>
              <operator activated="true" class="generate_attributes" compatibility="6.4.000" expanded="true" height="76" name="Generate Attributes" width="90" x="313" y="30">
                <list key="function_descriptions">
                  <parameter key="percentage" value="id*10"/>
                </list>
              </operator>
              <operator activated="true" class="select_attributes" compatibility="6.4.000" expanded="true" height="76" name="Select Attributes" width="90" x="447" y="30">
                <parameter key="attribute_filter_type" value="single"/>
                <parameter key="attribute" value="percentage"/>
                <parameter key="include_special_attributes" value="true"/>
              </operator>
              <connect from_op="Generate Data" from_port="output" to_op="Generate ID" to_port="example set input"/>
              <connect from_op="Generate ID" from_port="example set output" to_op="Generate Attributes" to_port="example set input"/>
              <connect from_op="Generate Attributes" from_port="example set output" to_op="Select Attributes" to_port="example set input"/>
              <connect from_op="Select Attributes" from_port="example set output" to_port="out 1"/>
              <portSpacing port="source_in 1" spacing="0"/>
              <portSpacing port="sink_out 1" spacing="0"/>
              <portSpacing port="sink_out 2" spacing="0"/>
            </process>
          </operator>
          <operator activated="true" class="numerical_to_polynominal" compatibility="6.4.000" expanded="true" height="76" name="Numerical to Polynominal" width="90" x="313" y="165">
            <parameter key="attribute_filter_type" value="single"/>
            <parameter key="attribute" value="percentage"/>
          </operator>
          <operator activated="true" class="loop_values" compatibility="6.4.000" expanded="true" height="76" name="Loop Values" width="90" x="581" y="165">
            <parameter key="attribute" value="percentage"/>
            <parameter key="iteration_macro" value="noiseLevel"/>
            <process expanded="true">
              <operator activated="true" class="recall" compatibility="6.4.000" expanded="true" height="60" name="Recall" width="90" x="45" y="120">
                <parameter key="name" value="tempObject"/>
                <parameter key="remove_from_store" value="false"/>
              </operator>
              <operator activated="true" class="filter_examples" compatibility="6.4.000" expanded="true" height="94" name="Filter Examples" width="90" x="313" y="120">
                <list key="filters_list">
                  <parameter key="filters_entry_key" value="att1.le.%{noiseLevel}"/>
                </list>
              </operator>
              <connect from_op="Recall" from_port="result" to_op="Filter Examples" to_port="example set input"/>
              <connect from_op="Filter Examples" from_port="example set output" to_port="out 1"/>
              <portSpacing port="source_example set" spacing="0"/>
              <portSpacing port="sink_out 1" spacing="0"/>
              <portSpacing port="sink_out 2" spacing="0"/>
              <description align="center" color="yellow" colored="false" height="199" resized="true" width="245" x="254" y="59">Do you work on the example set</description>
              <description align="center" color="yellow" colored="false" height="178" resized="true" width="202" x="10" y="67">Be sure not to delete that item</description>
            </process>
          </operator>
          <connect from_op="Generate Data (2)" from_port="output" to_op="Remember" to_port="store"/>
          <connect from_op="Subprocess" from_port="out 1" to_op="Numerical to Polynominal" to_port="example set input"/>
          <connect from_op="Numerical to Polynominal" from_port="example set output" to_op="Loop Values" to_port="example set"/>
          <connect from_op="Loop Values" from_port="out 1" to_port="result 1"/>
          <portSpacing port="source_input 1" spacing="0"/>
          <portSpacing port="sink_result 1" spacing="144"/>
          <portSpacing port="sink_result 2" spacing="0"/>
          <description align="center" color="yellow" colored="false" height="255" resized="true" width="195" x="10" y="59">Generate Data with the desired percentages. You can also use Read Excel or the Data editor</description>
          <description align="center" color="yellow" colored="false" height="270" resized="true" width="308" x="212" y="50">Loop Values needs polynominal values. That does not matter that much, because we use it as a macro anyway</description>
          <description align="center" color="yellow" colored="false" height="224" resized="true" width="325" x="205" y="338">This is the data you want to apply the process in the loop. Please take care of the excecution order</description>
        </process>
      </operator>
    </process>