2014-02-17 2 views
0

Мне нужно динамически вводить файлы в мое приложение Java и использовать quickminer для классификации. У меня есть следующий код:Динамически добавлять входные данные в RapidMiner через Java

RapidMiner.setExecutionMode(RapidMiner.ExecutionMode.COMMAND_LINE); 
      RapidMiner.init(); 

      Process process = new Process(new File("C:\\Users\\nelze\\.RapidMiner5  \\repositories\\WalkingRepo\\NaiveClassify.rmp")); 
      Operator op = process.getOperator("Read CSV"); 
      op.setParameter(com.rapidminer.operator.nio.CSVExampleSource.PARAMETER_CSV_FILE, "C:\\Users\\nelze\\unlabeled (2).csv"); 
      //ioInput.append(op); 
      IOContainer ioResult = process.run(); 
      ExampleSet resultSet1 = (ExampleSet)ioResult.getElementAt(0); 
      Iterator<Attribute> allAttributes = resultSet1.getAttributes().allAttributes(); 

Однако, когда я запускаю его, он всегда говорит «входной файл не определен».

В моем процессе RapidMiner входной порт подключен к READ CSV-оператору.

Любая помощь будет оценена

+0

Я думаю, что вы не должны соединить входной порт для ввода чтения CSV, так как она принимает объект файла там, когда те связаны, что вы, кажется, не поставка. –

+0

Привет! Что ты имеешь в виду? Я поставляю имя файла в setParameter, чтобы оператор чтения CSV мог использовать этот файл, не так ли? –

+0

Я имею в виду, что в вашем процессе «входной порт подключен к READ CSV-оператору», поэтому setParameter не интересен, он ожидает файл из входного порта. –

ответ

1

Я предполагаю, что ваш оператор Read CSV подключен к входному порту процесса (верхний порт на левой стороне, помеченный inp.) Если это так, то параметр csv file (он также должен быть скрыт в пользовательском интерфейсе). Вместо этого используется файл, отправленный на входной порт. Существует два решения:

  1. Отсоедините этот порт и задайте параметр, как это делается в коде.

  2. Держите порт подключенным и отправите объект файла в процесс, поэтому он переходит от входного порта к оператору Read CSV. Измените код следующим образом:

    FileObject file = new SimpleFileObject(new File(".../unlabeled (2).csv")); 
    IOContainer input = new IOContainer(file); 
    IOContainer ioResult = process.run(input); 
    
Смежные вопросы