Due to recent updates, all users are required to create an Altair One account to login to the RapidMiner community. Click the Register button to create your account using the same email that you have previously used to login to the RapidMiner community. This will ensure that any previously created content will be synced to your Altair One account. Once you login, you will be asked to provide a username that identifies you to other Community users. Email us at Community with questions.

"Replace (Dictionary) operator not working"

RichyRichy Member Posts: 20 Contributor II
edited May 2019 in Help
Hi,

I'm trying to use the replace (dictionary) operator, but I cant make it works. I'm setting the type to "text" so I shouldn't have any problem (I also tried with nominal type).
My problem is it doesn't replace any value. I also tried the replace operator using regular expression to replace "-1" by "test" and it's working very well.
Would you have any idea?


Here is my code :
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<process version="5.0">
 <context>
   <input/>
   <output/>
   <macros/>
 </context>
 <operator activated="true" class="process" compatibility="5.0.11" expanded="true" name="Process">
   <process expanded="true" height="425" width="822">
     <operator activated="true" class="generate_data" compatibility="5.0.11" expanded="true" height="60" name="Generate Data" width="90" x="45" y="30">
       <parameter key="number_of_attributes" value="1"/>
       <parameter key="datamanagement" value="int_array"/>
     </operator>
     <operator activated="true" class="numerical_to_polynominal" compatibility="5.0.11" expanded="true" height="76" name="Numerical to Polynominal (2)" width="90" x="179" y="30">
       <parameter key="attribute_filter_type" value="single"/>
       <parameter key="attribute" value="att1"/>
     </operator>
     <operator activated="true" class="nominal_to_text" compatibility="5.0.11" expanded="true" height="76" name="Nominal to Text" width="90" x="313" y="30"/>
     <operator activated="true" class="read_csv" compatibility="5.0.11" expanded="true" height="60" name="Read CSV" width="90" x="45" y="120">
       <parameter key="file_name" value="file:/D:/datamining/Scripts/rename.csv"/>
       <list key="data_set_meta_data_information"/>
     </operator>
     <operator activated="true" class="numerical_to_polynominal" compatibility="5.0.11" expanded="true" height="76" name="Numerical to Polynominal" width="90" x="179" y="120"/>
     <operator activated="true" class="nominal_to_text" compatibility="5.0.11" expanded="true" height="76" name="Nominal to Text (2)" width="90" x="313" y="120"/>
     <operator activated="true" class="replace_dictionary" compatibility="5.0.11" expanded="true" height="94" name="Replace (Dictionary)" width="90" x="447" y="30">
       <parameter key="attribute_filter_type" value="single"/>
       <parameter key="attribute" value="att1"/>
       <parameter key="from_attribute" value="old_value"/>
       <parameter key="to_attribute" value="new_value"/>
       <parameter key="use_regular_expressions" value="true"/>
     </operator>
     <connect from_op="Generate Data" from_port="output" to_op="Numerical to Polynominal (2)" to_port="example set input"/>
     <connect from_op="Numerical to Polynominal (2)" from_port="example set output" to_op="Nominal to Text" to_port="example set input"/>
     <connect from_op="Nominal to Text" from_port="example set output" to_op="Replace (Dictionary)" to_port="example set input"/>
     <connect from_op="Read CSV" from_port="output" to_op="Numerical to Polynominal" to_port="example set input"/>
     <connect from_op="Numerical to Polynominal" from_port="example set output" to_op="Nominal to Text (2)" to_port="example set input"/>
     <connect from_op="Nominal to Text (2)" from_port="example set output" to_op="Replace (Dictionary)" to_port="dictionary"/>
     <portSpacing port="source_input 1" spacing="0"/>
     <portSpacing port="sink_result 1" spacing="0"/>
   </process>
 </operator>
</process>
And my .csv file :
old_value;new_value
-10;first
-9;first
-8;first
-7;first
-6;first
-5;first
-4;first
-3;first
-2;second
-1;second
0;second
1;second
2;second
3;second
4;second
5;third
6;third
7;third
8;third
9;third
10;third

Regards,
Richard.

Answers

  • landland RapidMiner Certified Analyst, RapidMiner Certified Expert, Member Posts: 2,531 Unicorn
    Hi,
    you need to switch of treating "-1" as regular expression or you will have to escape "-".
    Just turn the parameter "use_regular_expression" off and it will work.

    Greetings,
    Sebastian
  • RichyRichy Member Posts: 20 Contributor II
    Hi,

    Thank you for the fast reply. I tried to turn the parameter "use_regular_expression" off, but it doesn't change anything.


    Regards,
    Richard.
  • landland RapidMiner Certified Analyst, RapidMiner Certified Expert, Member Posts: 2,531 Unicorn
    Hi,
    your process does work as you posted on the current developer version. So I guess you simply have to wait for the next update.

    Greetings,
      Sebastian
  • RichyRichy Member Posts: 20 Contributor II
    Hi,

    I just updated rapidminer to the new version (5.1) and it's working well.


    Regards,
    Richard.
Sign In or Register to comment.