Java-R集成?

mba*_*rov 54 java regression r machine-learning

我有一个Java应用程序需要执行偏最小二乘回归.看来PLSR没有Java实现.Weka可能在某些时候有类似的东西,但它不再在API中.另一方面,我发现了一个很好的R实现,它有一个额外的好处.它被我想要复制的人使用,这意味着由于PLSR实现方式的不同,事情出错的可能性较小.

问题是:是否有足够好(且易于使用)的包使Java能够调用R,将一些参数传递给函数并读回结果?我的另一个选择是让Java在一个进程中生成R然后监视它.数据将被读取并写入磁盘.你会推荐哪两个?我错过了明显的第三种选择吗?

Gui*_*ido 50

我过去成功使用了两种替代品.

JRI

  • 优点:可能性能更好.
  • 缺点:您必须配置一些环境变量和库,在Win/UNIX中是不同的.

RServe

  • 优点:易于设置,您不需要初始化R或链接任何R库,可以在不同的机器上运行.
  • 缺点:基于TCP/IP(服务器正在运行),没有来自R的回调.

我从未使用过的其他替代品:RCaller


42-*_*42- 10

Duncan Temple Lang的工作有:http://rss.acs.unt.edu/Rdoc/library/SJava/Docs/RFromJava.pdf.

我对最强大的解决方案的猜测是JGR.JGR的开发人员有一个邮件列表,Stats-Rosuda邮件列表存档表明该列表自2013年起仍然有效.

还有一些代码已经放在Googlecode上,这里有一个例子:http: //stdioe.blogspot.com/2011/07/rcaller-20-calling-r-from-java.html


Chr*_*ord 8

这是一个老问题..但对于浏览这里仍然感兴趣的人来说:我写了一篇博客文章,提供了如何使用JRI/rjava(一个基于JNI的桥)来做这类事情的详细示例(如何 - 专注于Linux开发环境).我还通过调用R和类似的框架来比较和对比做出"mathy"事情的替代方法.

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


jua*_*mjr 6

Renjin是一种替代方案,不仅可以集成许多R包,还可以通过对象轻松地在Java和R之间进行通信:

http://www.renjin.org/