🎉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

"Loop Attributes - Not Enough Iterations Error"

User: "1705410G"
New Altair Community Member
Updated by Jocelyn
I'm trying to make use of my Loop Attributes with Generate Attributes inside of it. I did it with the help of refencing closely to this video (https://academy.rapidminer.com/learn/video/loop-attributes)

However, the "Not Enough Iterations" popped out when I run the process. 

It states that the minimum number of iterations must not be smaller than 1 but was '0'

I don't see anything with regards to 'Iteration' appearing in the above mentioned video as well as in the parameters of Loop Attributes/Generate Attributes. 

How do I solve it?

Regards,
AY

Find more posts tagged with

Sort by:
1 - 8 of 81
    User: "David_A"
    New Altair Community Member
    Accepted Answer
    Hi,

    iterations in that case means, number of attributes you are looping over. So in that case, the example set (or subset) is empty.
    Did you select a different attribute filter type than "all"? In that case make sure that at least one of your attributes fulfills the condition.

    By using breakpoints, you can halt the execution of the process and see how your example set looks during run time.

    Best,
    David
     
    User: "1705410G"
    New Altair Community Member
    OP
    Hi David_A ,

    I'm using subset. But i'm unsure why this error occurred since there's definitely more than 1 examples.

    Regards,
    AY
    User: "David_A"
    New Altair Community Member
    Have you by chance checked the reuse results  checkbox and are using a Select Attribute operator inside the loop, or something similar?

    In such a scenario, your reduced subset is passed over to the next loop and then it might be empty.
    User: "sgenzer"
    Altair Employee
    User: "1705410G"
    New Altair Community Member
    OP
    Updated by 1705410G
    David_A ,

    Yes, I've checked the reuse results box and placed a Generate Attribute operator inside the Loop Attribute.

    So what can I do then? Should I uncheck the reuse results? 

    Regards,
    AY
    User: "KM_ALTR"
    Altair Employee
    Accepted Answer
    @1705410G I suggest to make sure you use some of the standard debugging features like break-points () and logs to find out what is really happening in every step of your process then if that doesn't help please share your data and the process so we can look into it further. Happy debugging!
    User: "David_A"
    New Altair Community Member
    Accepted Answer
    Hi,

    inside you loop you keep a copy of the original example set (normally from the "orig" port of the Select Attribute) and join both branches back together before passing the data back to the next iteration. Take a look at the process below for a simple example.

    If you uncheck "reuse results" you will get a collection containing a single example set for each iteration, but with the benefit that it can be executed in parallel.

    Best,
    David


    <?xml version="1.0" encoding="UTF-8"?><process version="9.1.000">
      <context>
        <input/>
        <output/>
        <macros/>
      </context>
      <operator activated="true" class="process" compatibility="9.1.000" expanded="true" name="Process" origin="GENERATED_TUTORIAL">
        <parameter key="logverbosity" value="init"/>
        <parameter key="random_seed" value="2001"/>
        <parameter key="send_mail" value="never"/>
        <parameter key="notification_email" value=""/>
        <parameter key="process_duration_for_mail" value="30"/>
        <parameter key="encoding" value="SYSTEM"/>
        <process expanded="true">
          <operator activated="true" class="retrieve" compatibility="9.1.000" expanded="true" height="68" name="Retrieve Iris" width="90" x="112" y="34">
            <parameter key="repository_entry" value="//Samples/data/Iris"/>
          </operator>
          <operator activated="true" class="concurrency:loop_attributes" compatibility="8.2.000" expanded="true" height="82" name="Loop Attributes" origin="GENERATED_TUTORIAL" width="90" x="380" y="34">
            <parameter key="attribute_filter_type" value="value_type"/>
            <parameter key="attribute" value=""/>
            <parameter key="attributes" value=""/>
            <parameter key="use_except_expression" value="false"/>
            <parameter key="value_type" value="numeric"/>
            <parameter key="use_value_type_exception" value="false"/>
            <parameter key="except_value_type" value="text"/>
            <parameter key="block_type" value="attribute_block"/>
            <parameter key="use_block_type_exception" value="false"/>
            <parameter key="except_block_type" value="value_matrix_row_start"/>
            <parameter key="invert_selection" value="false"/>
            <parameter key="include_special_attributes" value="true"/>
            <parameter key="attribute_name_macro" value="loop_attribute"/>
            <parameter key="reuse_results" value="true"/>
            <parameter key="enable_parallel_execution" value="true"/>
            <process expanded="true">
              <operator activated="true" class="select_attributes" compatibility="9.1.000" expanded="true" height="82" name="Select Attributes" width="90" x="112" y="238">
                <parameter key="attribute_filter_type" value="single"/>
                <parameter key="attribute" value="%{loop_attribute"/>
                <parameter key="attributes" value=""/>
                <parameter key="use_except_expression" value="false"/>
                <parameter key="value_type" value="attribute_value"/>
                <parameter key="use_value_type_exception" value="false"/>
                <parameter key="except_value_type" value="time"/>
                <parameter key="block_type" value="attribute_block"/>
                <parameter key="use_block_type_exception" value="false"/>
                <parameter key="except_block_type" value="value_matrix_row_start"/>
                <parameter key="invert_selection" value="true"/>
                <parameter key="include_special_attributes" value="false"/>
              </operator>
              <operator activated="true" class="generate_attributes" compatibility="9.1.000" expanded="true" height="82" name="Generate Attributes" origin="GENERATED_TUTORIAL" width="90" x="380" y="34">
                <list key="function_descriptions">
                  <parameter key="double_(%{loop_attribute})" value="eval(%{loop_attribute})*2"/>
                </list>
                <parameter key="keep_all" value="true"/>
              </operator>
              <operator activated="true" class="concurrency:join" compatibility="9.1.000" expanded="true" height="82" name="Join" width="90" x="715" y="238">
                <parameter key="remove_double_attributes" value="true"/>
                <parameter key="join_type" value="inner"/>
                <parameter key="use_id_attribute_as_key" value="true"/>
                <list key="key_attributes"/>
                <parameter key="keep_both_join_attributes" value="false"/>
                <description align="center" color="yellow" colored="true" width="126">Merge both branches together and reuse them in the next iteration</description>
              </operator>
              <connect from_port="input 1" to_op="Select Attributes" to_port="example set input"/>
              <connect from_op="Select Attributes" from_port="example set output" to_op="Generate Attributes" to_port="example set input"/>
              <connect from_op="Select Attributes" from_port="original" to_op="Join" to_port="right"/>
              <connect from_op="Generate Attributes" from_port="example set output" to_op="Join" to_port="left"/>
              <connect from_op="Join" from_port="join" 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"/>
              <description align="center" color="yellow" colored="false" height="105" resized="false" width="180" x="89" y="31">The upper branch only contains the single loop_attribute</description>
              <description align="center" color="yellow" colored="false" height="105" resized="false" width="180" x="352" y="316">The lower branch contains the original data</description>
            </process>
          </operator>
          <connect from_op="Retrieve Iris" 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>
    


    User: "1705410G"
    New Altair Community Member
    OP
    I've solved it! Thank you all for helping!! :):)