Accessing Name of Collection Items
divot_powell
New Altair Community Member
Hi,
I've been using rapidminer for a bit now, and have finally been stumped with what I would like to do. Any help would be greatly appreciated.
I have a collection of example sets. These example sets have names I have given them such as KNN, NeuralNet etc corresponding to the type of predictor used (Replacing their original name of 'Append (x)'). I am trying to output these results to a csv file, with a seperate file for each example set, and would like to name the files after these names. Is there a way of accessing the name of an example set (or collection item) as a parameter or otherwise for use in a 'Write CSV' block?
So far I have managed to extract each example set from the collection using a 'Loop Collection' block, then taking the input to each iteration and appending it down to a standard example set. I can pump these into a 'Write CSV' block with no problem, but each iteration creates a new file of the same name, overwriting the previous iterations.
Cheers,
Dan
I've been using rapidminer for a bit now, and have finally been stumped with what I would like to do. Any help would be greatly appreciated.
I have a collection of example sets. These example sets have names I have given them such as KNN, NeuralNet etc corresponding to the type of predictor used (Replacing their original name of 'Append (x)'). I am trying to output these results to a csv file, with a seperate file for each example set, and would like to name the files after these names. Is there a way of accessing the name of an example set (or collection item) as a parameter or otherwise for use in a 'Write CSV' block?
So far I have managed to extract each example set from the collection using a 'Loop Collection' block, then taking the input to each iteration and appending it down to a standard example set. I can pump these into a 'Write CSV' block with no problem, but each iteration creates a new file of the same name, overwriting the previous iterations.
Cheers,
Dan
Tagged:
0
Answers
-
Hi Dan.
As far as I know it is not possible to access the name of an IO-Object in order to write a certain csv file. But there are other possibilities. You may use LoopParameters to access a collection item and write certain names or use the %{a} macro to write iteration numbers. Both operator constructions can be found in the following process:<process version="5.1.009">
For more information about macro definitions please have a look at our wiki:
<context>
<input/>
<output/>
<macros/>
</context>
<operator activated="true" class="process" compatibility="5.1.009" expanded="true" name="Process">
<process expanded="true" height="514" width="705">
<operator activated="true" class="retrieve" compatibility="5.1.009" expanded="true" height="60" name="Retrieve" width="90" x="45" y="30">
<parameter key="repository_entry" value="//Samples/data/Golf"/>
</operator>
<operator activated="true" class="retrieve" compatibility="5.1.009" expanded="true" height="60" name="Retrieve (2)" width="90" x="45" y="120">
<parameter key="repository_entry" value="//Samples/data/Iris"/>
</operator>
<operator activated="true" class="retrieve" compatibility="5.1.009" expanded="true" height="60" name="Retrieve (3)" width="90" x="45" y="210">
<parameter key="repository_entry" value="//Samples/data/Sonar"/>
</operator>
<operator activated="true" class="collect" compatibility="5.1.009" expanded="true" height="112" name="Collect" width="90" x="246" y="75"/>
<operator activated="true" class="multiply" compatibility="5.1.009" expanded="true" height="94" name="Multiply" width="90" x="380" y="75"/>
<operator activated="true" class="loop_collection" compatibility="5.1.009" expanded="true" height="60" name="Use Numbers" width="90" x="514" y="120">
<process expanded="true" height="514" width="737">
<operator activated="true" class="write_csv" compatibility="5.1.009" expanded="true" height="60" name="Write CSV (2)" width="90" x="112" y="30">
<parameter key="csv_file" value="output_%{a}.csv"/>
</operator>
<connect from_port="single" to_op="Write CSV (2)" to_port="input"/>
<portSpacing port="source_single" spacing="0"/>
<portSpacing port="sink_output 1" spacing="0"/>
</process>
</operator>
<operator activated="true" class="loop_parameters" compatibility="5.1.009" expanded="true" height="76" name="Write Names" width="90" x="514" y="30">
<list key="parameters">
<parameter key="Select.index" value="[1;3;3;linear]"/>
<parameter key="Write CSV.csv_file" value="golf.csv,iris.csv,sonar.csv"/>
</list>
<parameter key="synchronize" value="true"/>
<process expanded="true" height="514" width="737">
<operator activated="true" class="select" compatibility="5.1.009" expanded="true" height="60" name="Select" width="90" x="112" y="30">
<parameter key="index" value="3"/>
</operator>
<operator activated="true" class="write_csv" compatibility="5.1.009" expanded="true" height="60" name="Write CSV" width="90" x="313" y="30">
<parameter key="csv_file" value="sonar.csv"/>
</operator>
<connect from_port="input 1" to_op="Select" to_port="collection"/>
<connect from_op="Select" from_port="selected" to_op="Write CSV" to_port="input"/>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="source_input 2" spacing="0"/>
<portSpacing port="sink_performance" spacing="0"/>
<portSpacing port="sink_result 1" spacing="0"/>
</process>
</operator>
<connect from_op="Retrieve" from_port="output" to_op="Collect" to_port="input 1"/>
<connect from_op="Retrieve (2)" from_port="output" to_op="Collect" to_port="input 2"/>
<connect from_op="Retrieve (3)" from_port="output" to_op="Collect" to_port="input 3"/>
<connect from_op="Collect" from_port="collection" to_op="Multiply" to_port="input"/>
<connect from_op="Multiply" from_port="output 1" to_op="Write Names" to_port="input 1"/>
<connect from_op="Multiply" from_port="output 2" to_op="Use Numbers" to_port="collection"/>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="sink_result 1" spacing="0"/>
</process>
</operator>
</process>
http://rapid-i.com/wiki/index.php?title=First_Steps_With_RapidMiner#Parameter_Macros
Cheers,
Helge0 -
Something like %{a} was just what I was looking for, I can refer back to which model it is now without any problem and each csv is kept seperate. Thanks for the link to that page too, I feel I probably should have found that one earlier...
Cheers,
Dan0