The Altair Community is migrating to a new platform to provide a better experience for you. In preparation for the migration, the Altair Community is on read-only mode from October 28 - November 6, 2024. Technical support via cases will continue to work as is. For any urgent requests from Students/Faculty members, please submit the form linked here
Loop through filtered values
I am having trouble putting together a loop.
I have a dataset with multiple products. Let's say I want to run the model three times for 3 different products. I created 3 macros with product names.
Then in my filter Product Name = Macro 1, run model on that filtered dataset. Then how do I create a loop so it goes Product Name = Macro 2 etc. run the model again for this dataset and so on for all specified macros ?
Really appreciate any help.
I have a dataset with multiple products. Let's say I want to run the model three times for 3 different products. I created 3 macros with product names.
Then in my filter Product Name = Macro 1, run model on that filtered dataset. Then how do I create a loop so it goes Product Name = Macro 2 etc. run the model again for this dataset and so on for all specified macros ?
Really appreciate any help.
Tagged:
0
Best Answer
-
varunm1 Member Posts: 1,207 UnicornHello @asav_yu
Looks like a macro inside another macro is not possible. Did you try "loop values" operator for your requirement? This will filter data based on attribute value automatically. Please see below XML with titanic dataset.<?xml version="1.0" encoding="UTF-8"?><process version="9.3.001">
<context>
<input/>
<output/>
<macros/>
</context>
<operator activated="true" class="process" compatibility="9.3.001" expanded="true" name="Process">
<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.3.001" expanded="true" height="68" name="Retrieve Titanic Training" width="90" x="45" y="34">
<parameter key="repository_entry" value="//Samples/data/Titanic Training"/>
</operator>
<operator activated="true" class="concurrency:loop_values" compatibility="9.3.001" expanded="true" height="82" name="Loop Values" width="90" x="380" y="34">
<parameter key="attribute" value="Passenger Class"/>
<parameter key="iteration_macro" value="loop_value"/>
<parameter key="reuse_results" value="false"/>
<parameter key="enable_parallel_execution" value="true"/>
<process expanded="true">
<operator activated="true" class="filter_examples" compatibility="9.3.001" expanded="true" height="103" name="Filter Examples" width="90" x="246" y="34">
<parameter key="parameter_expression" value=""/>
<parameter key="condition_class" value="custom_filters"/>
<parameter key="invert_filter" value="false"/>
<list key="filters_list">
<parameter key="filters_entry_key" value="Passenger Class.equals.%{loop_value}"/>
</list>
<parameter key="filters_logic_and" value="true"/>
<parameter key="filters_check_metadata" value="true"/>
</operator>
<connect from_port="input 1" to_op="Filter Examples" to_port="example set input"/>
<connect from_op="Filter Examples" 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="Retrieve Titanic Training" from_port="output" to_op="Loop Values" to_port="input 1"/>
<connect from_op="Loop Values" 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>
Please inform if you need more information.Regards,
Varun
https://www.varunmandalapu.com/Be Safe. Follow precautions and Maintain Social Distancing
1
Answers
Once you set the number of iterations to 3 in loop operator, you can write Product Name = Macro %{execution_count} . If possible rename macros to Macro_1, Macro_2, Macro_3 and try Macro_%{execution_count}. I suggested this renaming cause, I am not sure if rapidminer can deal with spaces.
The said statement will give value Macro_1 for first execution, Macro_2 for the second execution of the loop and soon. I am just guessing your process and proposing this but if you could provide your XML the solution can be more specific.
Varun
https://www.varunmandalapu.com/
Be Safe. Follow precautions and Maintain Social Distancing
Thanks again for your help!