🎉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

Running RM process (Correlation Matrix) from Java does not use dada from exsampl

User: "nadi"
New Altair Community Member
Updated by Jocelyn
Hi,

When I run my process from Java app I always get same result. Passing dataset has no effect. I followed the examples I found, however, was not able to find a solution. Thanks in advance.

Here is the Java code followed by the process code

Java Code:

    static public void runProcess()
RapidMiner.setExecutionMode(ExecutionMode.COMMAND_LINE);
RapidMiner.init();

// loads the process from the repository
RepositoryLocation pLoc;
try {


Process myProcess = new Process(new File("C:\\RM_Repository\\DemoPreparationProject\\Processes\\CorrelationAnalysis_NB.rmp"));
ExampleSet es = createExampleSet();
// execute the process and get the resulting objects
IOContainer ioInput = new IOContainer(new IOObject[] {es});
// just use myProcess.run() if you don't use the input ports for your process
IOContainer ioResult = myProcess.run(ioInput);

NumericalMatrix  resultExample = ioResult.get(NumericalMatrix .class);
for (int row= 0; row < resultExample.getNumberOfRows(); row++){
for (int col= 0; col < resultExample.getNumberOfColumns(); col++){
System.out.print(String.format("%f6.2 \t" ,resultExample.getValue(row, col)));
}
System.out.println("");
}
} catch (MalformedRepositoryLocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}  catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XMLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OperatorException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

        }
static public ExampleSet createExampleSet() {
    // create attribute list
    List<Attribute> attributes = new LinkedList<Attribute>();

attributes.add(AttributeFactory.createAttribute("A" ,Ontology.REAL));
attributes.add(AttributeFactory.createAttribute("B" ,Ontology.REAL));
attributes.add(AttributeFactory.createAttribute("C" ,Ontology.REAL));
attributes.add(AttributeFactory.createAttribute("D" ,Ontology.REAL));
   

    // create table
    MemoryExampleTable table = new MemoryExampleTable(attributes);

double [][] date = getData();
// make and add row

   
    // fill table (here: only real values)
    for (int d = 0; d < date[0].length; d++) {
      double[] data = new double[attributes.size()];
      for (int a = 0; a < attributes.size(); a++) {
        // fill with proper data here
        data = date;
      }
         
      // add data row
      table.addDataRow(new DoubleArrayDataRow(data));
    }

    // create example set
    ExampleSet exampleSet = table.createExampleSet();
    return exampleSet;
  }


Process code:


<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<process version="5.2.006">
  <context>
    <input/>
    <output/>
    <macros/>
  </context>
  <operator activated="true" class="process" compatibility="5.2.006" 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"/>
    <parameter key="parallelize_main_process" value="false"/>
    <process expanded="true" height="-20" width="-50">
      <operator activated="true" class="read_csv" compatibility="5.2.006" expanded="true" height="60" name="Read CSV" width="90" x="37" y="53">
        <parameter key="csv_file" value="C:\RM_Repository\DemoPreparationProject\Data\RM_data.csv"/>
        <parameter key="column_separators" value=","/>
        <parameter key="trim_lines" value="false"/>
        <parameter key="use_quotes" value="true"/>
        <parameter key="quotes_character" value="&quot;"/>
        <parameter key="escape_character_for_quotes" value="\"/>
        <parameter key="skip_comments" value="false"/>
        <parameter key="comment_characters" value="#"/>
        <parameter key="parse_numbers" value="true"/>
        <parameter key="decimal_character" value="."/>
        <parameter key="grouped_digits" value="false"/>
        <parameter key="grouping_character" value=","/>
        <parameter key="date_format" value=""/>
        <parameter key="first_row_as_names" value="false"/>
        <list key="annotations">
          <parameter key="0" value="Name"/>
        </list>
        <parameter key="time_zone" value="SYSTEM"/>
        <parameter key="locale" value="English (United States)"/>
        <parameter key="encoding" value="windows-1252"/>
        <list key="data_set_meta_data_information">
          <parameter key="0" value="A.true.real.attribute"/>
          <parameter key="1" value="B.true.real.attribute"/>
          <parameter key="2" value="C.true.real.attribute"/>
          <parameter key="3" value="D.true.real.attribute"/>
        </list>
        <parameter key="read_not_matching_values_as_missings" value="true"/>
        <parameter key="datamanagement" value="double_array"/>
      </operator>
      <operator activated="true" class="correlation_matrix" compatibility="5.2.006" expanded="true" height="94" name="Correlation Matrix" width="90" x="334" y="66">
        <parameter key="create_weights" value="false"/>
        <parameter key="normalize_weights" value="true"/>
        <parameter key="squared_correlation" value="false"/>
      </operator>
      <connect from_op="Read CSV" from_port="output" to_op="Correlation Matrix" to_port="example set"/>
      <connect from_op="Correlation Matrix" from_port="matrix" to_port="result 1"/>
      <connect from_op="Correlation Matrix" from_port="weights" to_port="result 2"/>
      <portSpacing port="source_input 1" spacing="0"/>
      <portSpacing port="sink_result 1" spacing="0"/>
      <portSpacing port="sink_result 2" spacing="0"/>
      <portSpacing port="sink_result 3" spacing="0"/>
    </process>
  </operator>
</process>

Find more posts tagged with

Sort by:
1 - 1 of 11
    User: "Nils_Woehler"
    New Altair Community Member
    Hi,

    I took a quick look at the Java code and it looks good.
    The problem here is your process. There you load a static file ("Data\RM_data.csv") and calculate the correlation matrix.
    If you want to use the data you provide when you run the process via Java it has to look like this:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <process version="5.2.007">
      <context>
        <input/>
        <output/>
        <macros/>
      </context>
      <operator activated="true" class="process" compatibility="5.2.007" expanded="true" name="Process">
        <process expanded="true" height="145" width="212">
          <operator activated="true" class="correlation_matrix" compatibility="5.2.007" expanded="true" height="94" name="Correlation Matrix" width="90" x="334" y="66"/>
          <connect from_port="input 1" to_op="Correlation Matrix" to_port="example set"/>
          <connect from_op="Correlation Matrix" from_port="matrix" to_port="result 1"/>
          <connect from_op="Correlation Matrix" from_port="weights" to_port="result 2"/>
          <portSpacing port="source_input 1" spacing="0"/>
          <portSpacing port="source_input 2" spacing="0"/>
          <portSpacing port="sink_result 1" spacing="0"/>
          <portSpacing port="sink_result 2" spacing="0"/>
          <portSpacing port="sink_result 3" spacing="0"/>
        </process>
      </operator>
    </process>
    Best,
    Nils