2017-02-27 6 views
-1

RServe 패키지를 사용하여 R과 Java를 연결하는 응용 프로그램을 빌드했습니다. 이 프로젝트에서는 출력을 예측하기 위해 신경망을 사용합니다. 다음과 같이 어디에서 사용하는 소스 코드입니다된다R Rserve를 사용하여 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) 
} 

으로 생성 된 출력은 다음과 같습니다 여기

enter image description here

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..."); 
    } 
} 

그러나 출력 결과는 "실제로 문제가 있습니다 ..."입니다.

+0

를 얻을 실행하면? – freedev

+0

나는 그것을 업데이트해야한다. –

+0

Rserve는 자바 클라이언트 라이브러리를 가지고있다. Maven에는 합리적으로 새로운 버전이 있습니다. 뭔가를 시도하고보다 자세한 질문을해야합니다. 지금은 질문이 너무 광범위합니다. –

답변

0

쓸모없는 메시지를 인쇄하기 위해 예외를 포착하지 마십시오. try catch를 제거하고 main을 선언하여 Exception을 발생시킵니다. 그렇게하면 실제 오류가 표시됩니다.

Rserve가 6311에서 로컬로 실행되고 있지 않거나 평가에 실패했거나 두 번째 평가 결과를 단일 이중으로 강제 변환 할 수 없습니다.

당신은 평가 대신
tryCatch({CODE},e=function()e) 

을하고 텍스트와 코드를 게시 할 수 반환 시도 오류를 상속 여부를 확인하고 메시지