2014-10-19 1 views
0

Создаю процесс, который измеряет сходство. Я использую ExampleSet2SimilarityExampleSetoperator, и я хочу добавить во вход пример набора, сгенерированного в моем коде.set Примеры для примераSet2SimilarityExampleSet Оператор Rapidminer с java

Первая идея - написать мой пример, установленный в локальном репозитории. Затем я буду использовать оператор retrieve для чтения набора примеров и подключения вывода оператора retrieve к вводу оператора ExampleSet2SimilarityExampleSet.

Так что я задаюсь вопросом, могу ли я избежать чтения/записи.

public class Test { 

     public static void main(String[] args) throws OperatorCreationException, OperatorException{ 
      Test t = new Test();   
      t.createprocess(); 
     } 
      public void createprocess() throws OperatorCreationException, OperatorException{ 
       RapidMiner.init(); 
       ExampleSet exampleset = getExampleset(); 

       Operator silimarityOperator = OperatorService.createOperator(ExampleSet2SimilarityExampleSet.class); 
     //  silimarityOperator.setParameter("measure_type", "NumericalMeasures"); 
     //  silimarityOperator.setParameter("numerical_measure", "CosineSimilarity"); 

       Process process = new Process(); 
       process.getRootOperator().getSubprocess(0).addOperator(silimarityOperator); 
       process.getRootOperator().getSubprocess(0).getInnerSources().getPortByIndex(0).connectTo(silimarityOperator.getInputPorts().getPortByName("input")); 

       // run the process with new IOContainer using the created exampleSet 
       IOContainer run = process.run(new IOContainer(exampleset)); 
       System.out.println(run.toString()); 




      } 

      public ExampleSet getExampleset() { 
     // construct attribute set 
       Attribute[] attributes = new Attribute[3]; 
       attributes[0] = AttributeFactory.createAttribute("Topic1", Ontology.STRING); 
       attributes[1] = AttributeFactory.createAttribute("Topic2", Ontology.STRING); 
       attributes[2] = AttributeFactory.createAttribute("Topic3", Ontology.STRING); 

       MemoryExampleTable table = new MemoryExampleTable(attributes); 
       DataRowFactory ROW_FACTORY = new DataRowFactory(0); 

       Double[] strings = new Double[3]; 

       double a = 0; 
       for (int i = 0; i < 3; i++) { 
        a++; 
        strings[i] = a; 
        // make and add row 
        DataRow row = ROW_FACTORY.create(strings, attributes); 

        table.addDataRow(row); 
       } 

       ExampleSet exampleSet = table.createExampleSet(); 
       return exampleSet; 
      } 
    } 

ответ

0

Я нашел решение. У меня ошибка при подключении оператора. Это не порт ввода порта, поэтому я получаю порт 0.

process.getRootOperator().getSubprocess(0).getInnerSources().getPortByIndex(0).connectTo( 
      silimarityOperator.getInputPorts().getPortByIndex(0)); 

    silimarityOperator.getOutputPorts().getPortByIndex(0).connectTo(
      process.getRootOperator().getSubprocess(0).getInnerSinks().getPortByIndex(0)); 

 Смежные вопросы

  • Нет связанных вопросов^_^