【问题标题】:Error in accessing Rapid Miner API from java program从 java 程序访问 Rapid Miner API 时出错
【发布时间】:2013-11-04 15:14:34
【问题描述】:

我有一个需要集群的演示数据。该实用程序应该将数据发送到快速矿工算法,然后检索结果。我使用 Rapid Miner API 来使用 Rapid Miner 现有的算法。但是我在使用这个 API 时遇到了问题。

Java 类:

package rajeev.rapidminer.main;

import java.io.File;
import java.io.IOException;

import com.rapidminer.Process;
import com.rapidminer.RapidMiner;
import com.rapidminer.RapidMiner.ExecutionMode;
import com.rapidminer.operator.IOObject;
import com.rapidminer.operator.OperatorException;
import com.rapidminer.repository.IOObjectEntry;
import com.rapidminer.repository.MalformedRepositoryLocationException;
import com.rapidminer.repository.RepositoryException;
import com.rapidminer.repository.RepositoryLocation;
import com.rapidminer.tools.XMLException;



public class Main {

public static void main(String a[]) throws IOException, XMLException, RepositoryException, OperatorException
{
    String rmpPath="C:/Users/rajeev-s/.RapidMiner5/repositories/Local Repository/DemoClustering.rmp";
    RapidMiner.setExecutionMode(ExecutionMode.COMMAND_LINE);
    RapidMiner.init();
    Process process=new Process(new File(rmpPath));

    RepositoryLocation modelLocation=new RepositoryLocation("//C:/Users/rajeev-s/.RapidMiner5/repositories/Local Repository/ClusterDemoOutput");
    IOObject model=((IOObjectEntry)modelLocation.locateEntry()).retrieveData(null);

    RepositoryLocation testDataLocation=new RepositoryLocation("//LocalRepository/TestData.txt");
    IOObject testData=((IOObjectEntry)testDataLocation.locateEntry()).retrieveData(null);

    com.rapidminer.operator.IOContainer ioInput = new com.rapidminer.operator.IOContainer(new IOObject[] { model, testData });
    process.run(ioInput);
    process.run(ioInput);
    final long start = System.currentTimeMillis();
    final com.rapidminer.operator.IOContainer ioResult = process.run(ioInput);
    final long end = System.currentTimeMillis();
    System.out.println("T:" + (end - start));
}

}

错误堆栈跟踪是:

Oct 25, 2013 6:28:53 PM com.rapidminer.tools.ParameterService init
INFO: Reading configuration resource com/rapidminer/resources/rapidminerrc.
Oct 25, 2013 6:28:53 PM com.rapidminer.tools.I18N <clinit>
INFO: Set locale to en.
Oct 25, 2013 6:28:54 PM com.rapid_i.Launcher ensureRapidMinerHomeSet
INFO: Property rapidminer.home is not set. Guessing.
Oct 25, 2013 6:28:54 PM com.rapid_i.Launcher ensureRapidMinerHomeSet
INFO: Trying parent directory of 'C:\Program Files\Rapid-     I\RapidMiner5\lib\launcher.jar'...gotcha!
Oct 25, 2013 6:28:54 PM com.rapid_i.Launcher ensureRapidMinerHomeSet
INFO: Trying parent directory of 'C:\Program Files\Rapid-   I\RapidMiner5\lib\rapidminer.jar'...gotcha!
Oct 25, 2013 6:29:00 PM com.rapidminer.tools.expression.parser.ExpressionParserFactory  <clinit>
INFO: Default version of expression parser registered successfully
Oct 25, 2013 6:29:06 PM com.rapidminer.parameter.ParameterTypePassword decryptPassword
WARNING: Password in XML file looks like unencrypted plain text.
Oct 25, 2013 6:29:10 PM com.rapidminer.tools.OperatorService init
INFO: Number of registered operator classes: 443; number of registered operator    descriptions: 444; number of replacements: 403
Oct 25, 2013 6:29:10 PM com.rapidminer.tools.jdbc.JDBCProperties <init>

警告:缺少 ODBC 桥的数据库驱动程序类名称(例如 Access) 2013 年 10 月 25 日下午 6:29:10 com.rapidminer.tools.jdbc.JDBCProperties registerDrivers 信息:找不到 JDBC 驱动程序 ca.ingres.jdbc.IngresDriver。应该是驱动没有安装。 [致命错误]:1:1:文件过早结束。 线程“主”com.rapidminer.repository.RepositoryException 中的异常:请求的存储库 C:不存在。 在 com.rapidminer.repository.RepositoryManager.getRepository(RepositoryManager.java:201) 在 com.rapidminer.repository.RepositoryLocation.getRepository(RepositoryLocation.java:139) 在 com.rapidminer.repository.RepositoryLocation.locateEntry(RepositoryLocation.java:162) 在 rajeev.rapidminer.main.Main.main(Main.java:29)

当我将“本地存储库”复制到我的类路径并将路径更改为:

//Local Repository/ClusterDemoOutput

然后生成以下堆栈跟踪:

Exception in thread "main" com.rapidminer.repository.RepositoryException: Requested  repository LocalRepository does not exist.
    at     com.rapidminer.repository.RepositoryManager.getRepository(RepositoryManager.java:201)
    at  com.rapidminer.repository.RepositoryLocation.getRepository(RepositoryLocation.java:139)
    at  com.rapidminer.repository.RepositoryLocation.locateEntry(RepositoryLocation.java:162)
    at rajeev.rapidminer.main.Main.main(Main.java:29)

请告诉我在哪里放置存储库。

还请推荐任何适当的博客或教程,解释如何从 java 代码中使用 Rapid Miner 算法(我在 google 上搜索的内容并未提及所有细节)

谢谢

【问题讨论】:

  • 你管理过它吗?我也有同样的问题。
  • 嗨,安迪。是的,我试过并得到了一个可行的解决方案。我刚刚删除了包含RepositoryLocationmain() 方法的行,并且在创建Process 时将.rmp 文件的文件路径更改为com.rapidminer.Process myProcess = new com.rapidminer.Process(new File("D:\\HCL\\drools\\Repository1\\Example1.rmp")); 这个解决方案对我有用。
  • @andi:如果您需要代码,我已将其粘贴为解决方案。

标签: machine-learning data-mining text-mining rapidminer


【解决方案1】:

确定

new RepositoryLocation("//C:/Users/

是一个有效的位置吗?对我来说,它看起来更像是一个错字。

但是,您也许应该在 rapidminer 论坛中提问;与通用编程网站相比,您更有可能在那里与 rapidminer 专家交谈。

【讨论】:

  • Anony-Mousse:实际上最初我给出的位置类似于 'C:/...' 但在堆栈跟踪中提到该位置应该类似于 '//RepositoryLocation/path/to/文件”,所以我相应地更改了它。
  • 好吧,我猜只是添加两个斜杠不会将路径名转换为存储库。
【解决方案2】:

我为上述问题找到了可行的解决方案。我不确定它是否是最好的,但它对我有用。

public class MinerForum {
    public static void main(String a[]) throws IOException, XMLException,  RepositoryException, OperatorException
    {
        int[] data={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
        List<Attribute> attributes=new ArrayList<Attribute>();
        String[] columns={"column1"};
        DataTable table=new SimpleDataTable("table1",columns);      
        for(int i=0;i<21;i++)
        {
            double[] value={i};
            DataTableRow row=new SimpleDataTableRow(value, i+"");
            table.add(row);
        }

        RapidMiner.setExecutionMode(ExecutionMode.COMMAND_LINE);
        RapidMiner.init();      
        com.rapidminer.Process myProcess = new com.rapidminer.Process(new File    ("D:\\drools\\Repository1\\Example1.rmp"));       
        IOContainer ioInput = new IOContainer();        
        IOContainer ioResult = myProcess.run(ioInput);
        // simple use 'ioResult' to display the results you want.       
    }   
}

【讨论】:

    猜你喜欢
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 2014-03-19
    相关资源
    最近更新 更多