【问题标题】:R Integrate with Java using RserveR 使用 Rserve 与 Java 集成
【发布时间】:2017-02-27 10:20:22
【问题描述】:

我已经使用 RServe 包构建了一个连接 R 和 java 的应用程序。在这个项目中,我使用神经网络来预测输出。我使用的源代码在哪里,如下:

myneuralnetscript=function(){   
    trainingData = read.csv("D:\\Kuliah\\Semester V\\TA\\Implementasi\\training.csv")
    testingData = read.csv("D:\\Kuliah\\Semester V\\TA\\Implementasi\\testing.csv")

    X1training <- trainingData$open
    X2training <- trainingData$high
    X3training <- trainingData$low
    X4training <- trainingData$close
    X5training <- trainingData$volume
    targetTraining <- trainingData$target

    X1testing <- testingData$open
    X2testing <- testingData$high
    X3testing <- testingData$low
    X4testing <- testingData$close
    X5testing <- testingData$volume
    targetTesting <- testingData$target

    xTraining <- cbind(X1training,X2training,X3training,X4training,X5training)

    sum.trainingData <- data.frame(xTraining,targetTraining)

    net.sum <- neuralnet(targetTraining~X1training+X2training+X3training+X4training+X5training, sum.trainingData, hidden=5,act.fct="logistic")

    xTesting <- cbind(X1testing,X2testing,X3testing,X4testing,X5testing)

    sum.testingData <- data.frame(xTesting,targetTesting)

    result <- compute(net.sum,sum.testingData[,1:5])

    return(result)
}

生成的输出如下:

这里的程序从Java中获取R的结果。

public static void main(String[] args) {

    RConnection connection = null;

    try {
        /* Create a connection to Rserve instance running on default port
         * 6311
         */
        connection = new RConnection();

  //Directory of R script
        connection.eval("source('D:\\\\Kuliah\\\\Semester V\\\\TA\\\\Implementasi\\\\R\\\\neuralNet.R')");

 //Call method
        double output = connection.eval("myneuralnetscript()").asDouble();

        System.out.println(output);   
} catch (RserveException | REXPMismatchException e) {
        System.out.println("There is some problem indeed...");
    }
}

但是,出现的输出是“确实存在一些问题......”。

【问题讨论】:

  • 您可以将代码发布为文本吗?
  • 我必须更新它先生...
  • Rserve 有一个 java 客户端库。 maven 上有一个相当新鲜的版本。你应该尝试一下,问一个更详细的问题,现在这个问题太宽泛了

标签: java r rserve


【解决方案1】:

请不要为了打印无用的消息而捕获异常。删除你的 try catch 并声明 main 抛出异常。这样你就会看到实际的错误。

Rserve 没有在 6311 上本地运行,或者它无法评估,或者无法将第二次评估的结果强制转换为单个 double。

当你运行 eval 时做

tryCatch({CODE},e=function ()e)

检查 return 是否继承自 try-error 并获取消息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    相关资源
    最近更新 更多