【问题标题】:Dynamically add input to RapidMiner through Java通过 Java 向 RapidMiner 动态添加输入
【发布时间】:2014-02-17 07:08:58
【问题描述】:

我需要将文件动态输入到我的 java 应用程序中并使用 rapidminer 进行分类。我有以下代码:

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 运算符。

任何帮助将不胜感激

【问题讨论】:

  • 我认为你不应该将输入端口连接到读取 CSV 的输入,因为当它们连接时它会在那里接受文件对象,而你似乎没有提供。
  • 您好!你是什​​么意思?我在 setParameter 中提供文件名,以便读取 CSV 操作员可以使用该文件,对吗?
  • 我的意思是在你的过程中“输入端口连接到 READ CSV 运算符”,所以 setParameter 并不有趣,它期待来自输入端口的文件。

标签: java rapidminer


【解决方案1】:

我假设您的Read CSV 运算符连接到进程的输入端口(左侧的顶部端口,标记为inp。)如果是这样,则不再使用参数csv file (它也应该隐藏在 UI 中)。而是使用发送到输入端口的文件。有两种解决方案:

  1. 断开该端口并像在代码中那样设置参数。

  2. 保持端口连接并将文件对象发送到进程中,因此它从输入端口转到Read CSV 运算符。像这样修改你的代码:

    FileObject file = new SimpleFileObject(new File(".../unlabeled (2).csv"));
    IOContainer input = new IOContainer(file);
    IOContainer ioResult = process.run(input);
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 2014-01-22
    相关资源
    最近更新 更多