programing

Java-R 통합?

minecode 2021. 1. 15. 07:57
반응형

Java-R 통합?


부분 최소 제곱 회귀를 수행해야하는 Java 앱이 있습니다. PLSR의 Java 구현이없는 것처럼 보입니다. Weka는 언젠가는 이와 비슷한 것을 가지고 있었지만 더 이상 API에 없습니다. 반면에, 추가 보너스가있는 좋은 R 구현을 찾았습니다. 결과를 복제하려는 사람들이 사용했기 때문에 PLSR 구현 방식의 차이로 인해 문제가 발생할 가능성이 적습니다.

문제는 Java가 R을 호출하고 일부 매개 변수를 함수에 전달하고 결과를 다시 읽을 수있는 충분히 좋은 (그리고 사용하기 쉬운) 패키지가 있습니까? 내 다른 옵션은 Java가 프로세스에서 R을 생성 한 다음 모니터링하는 것입니다. 데이터를 읽고 디스크에 기록합니다. 두 가지 중 어느 것을 추천 하시겠습니까? 분명한 세 번째 옵션을 놓치고 있습니까?


나는 과거에 두 가지 대안을 성공적으로 사용했습니다.

JRI

  • 장점 : 아마도 더 나은 성능.
  • 단점 : Win / UNIX에서 다른 환경 변수와 라이브러리를 구성해야합니다.

RServe

  • 장점 : 설정하기 쉽고 R을 초기화하거나 R 라이브러리에 연결할 필요가 없으며 다른 컴퓨터에서 실행할 수 있습니다.
  • 단점 : TCP / IP 기반 (서버가 실행 중임), R의 콜백 없음.

내가 사용한 적이없는 다른 대안 : RCaller


Duncan Temple Lang의 작업이있었습니다 : http://rss.acs.unt.edu/Rdoc/library/SJava/Docs/RFromJava.pdf .

가장 강력한 솔루션에 대한 내 생각은 JGR 입니다. JGR의 개발자는 메일 링리스트 Stats-Rosuda 를 가지고 있으며 메일 링리스트 Archive 는리스트가 2013 년까지 활성 상태임을 나타냅니다.

Googlecode에 게시 된 코드도 있습니다. 예는 다음과 같습니다. http://stdioe.blogspot.com/2011/07/rcaller-20-calling-r-from-java.html


이것은 오래된 질문입니다. 그러나 여전히 관심이있는 여기를 탐색하는 모든 사용자를 위해 JRI / rjava (JNI 기반 브리지)를 사용하여 이러한 유형의 작업을 수행하는 방법에 대한 자세한 예제를 제공하는 블로그 기사를 작성했습니다. -to는 Linux 개발 환경에 중점을 둡니다.) 또한 R 및 유사한 프레임 워크를 호출하여 '수학'작업을 수행하는 대체 접근 방식을 비교하고 대조합니다.

URL> http://buildlackey.com/integrating-r-and-java-with-jrirjava-a-jni-based-bridge/


Renjin은 R의 많은 패키지를 통합 할 수있을뿐만 아니라 객체를 통해 Java와 R간에 쉽게 통신 할 수있는 대안입니다.

http://www.renjin.org/


JRI에는 Java에서 R을 호출하기위한 저수준 및 고수준 인터페이스가 있습니다. http://www.studytrails.com/RJava-Eclipse-Plugin/ 에서 R Java 환경을 설정하는 데 도움이되는 Eclipse 플러그인이 있습니다.


이것은 오래된 질문 인 것 같습니다. 그러나 RserverJava 는 R을 Java와 통합하기위한 두 가지 좋은 패키지입니다. 다음 블로그는이 두 라이브러리의 사용법을 설명합니다.

rJava : http://www.codophile.com/how-to-integrate-r-with-java-using-rjava/

Rserve : http://www.codophile.com/how-to-integrate-r-with-java-using-rserve/

도움이 되길 바랍니다.


나는 비슷한 요구를 한동안 가지고 있었고 R에 대한 몇 가지 인터페이스를 테스트했습니다. 내 요구 (windows, c #)에 가장 적합한 것은 Java로 작성된 Rserve 였습니다 . 내 유일한 불만은 64 비트가 아니라는 것입니다. 저는 C #으로 작성된 간단한 클라이언트를 사용했으며 매우 잘 작동했습니다. Java 클라이언트가 훨씬 더 낫다고 확신합니다.


FastRGraalVM 기반 R 구현입니다. JVM 애플리케이션에 포함하는 것은 다음과 같이 간단합니다.

Context ctx = Context.newBuilder("R").allowAllAccess(true).build();
ctx.eval("R", "sum").execute(new int[] {1,2,3});

이 기사의 자세한 내용 : https://medium.com/graalvm/faster-r-with-fastr-4b8db0e0dceb

참조 URL : https://stackoverflow.com/questions/7451716/java-r-integration

반응형