Установите Exampleset в ExampleSet2S SimilarityExampleSet Оператор Rapidminer с Java
Я создаю процесс, который измеряет сходство. Я использую ExampleSet2SimilityExampleSetoperator и хочу добавить во вход набор примеров, который сгенерирован в моем коде.
Первая идея - написать мой пример в локальном репозитории. Затем я буду использовать оператор retrieve для чтения набора примеров и подключения вывода оператора retrieve к входу оператора ExampleSet2SdentifityExampleSet.
Поэтому мне интересно, смогу ли я избежать чтения / записи.
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;
}
}
1 ответ
Решение
Я нашел решение. У меня ошибка при подключении оператора. Это не существует порт ввода, поэтому я получаю порт 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));