• 使用Java和R搭建统计分析server端


    摘要:使用R搭建统计分析服务器,Java通过TCP/IP协议来与R服务器交互,输入分析数据及参数,获得统计分析结果。

    步骤:
    1. 搭建Rserve服务器,从而可以监听统计分析请求
    参考文章:R与JAVA的整合 (http://www.lijian001.com/r/blog_comment.asp?article_id=199)
    安装 R :$ sudo apt-get install r-base
    启动并进入R环境:$ R
    安装Rserve包:> install.packages("Rserve")
    加载Rserve包:> library("Rserve")
    启动Rserve(默认为demon方式启动): > Rserve

    至此R这一端的准备工作已经就绪,Rserve启动后即使用q()退出R环境,Rserve也依旧运行。

    2. 下载Rserve的jar包,这样可以直接调用已经做好的API,而不需要纠缠于R端的TCP/IP协议
    地址:http://www.rforge.net/Rserve/files/
    jar包共有两个:REngine.jar和RserveEngine.jar,目前还没弄清楚为什么不能把API放到一个jar包里来方便部署。

    3. 编写Java代码来调用Rserve
    最简单的几个调用方法:
    //将数组赋值给某个变量
    RConnection.assign("dataAName", arrayObject);

    // 此处dataAName和dataBName为两个数组变量名,这一语句将对dataA和dataB两组数据进行t检验,并返回R端相应的console输出。
    RConnection.eval("paste(capture.output(print(t.test(" + dataAName + "," + dataBName + "))),collapse=\"\\n\")").asString()

    //还可以将R中的plot图片导到Java中来,下面代码中返回的byte数组对象可以通过FileOutputStream来输出到一个jpg文件。这段代码应该还有不少可以优化的地方,但是我一时找不到tmp.jpg的存放路径,只好作罢:
    代码
        public static byte[] boxplot(RConnection c, String dataAName, String dataBName) throws REXPMismatchException, REngineException{
            String device 
    = "jpeg";

            REXP xp 
    = c.parseAndEval("try(" + device + "('tmp.jpg',quality=90))");
            c.parseAndEval(
    "boxplot(" + dataAName + "," + dataBName + "); dev.off()");
            xp 
    = c.parseAndEval("r=readBin('tmp.jpg','raw',1024*1024); unlink('tmp.jpg');r");

            
    return xp.asBytes();
        }

    后记:还有一种搭建方式是利用R本身的动态链接库来直接调用分析方法,我个人偏好client/server这种方式,因为感觉这样分层清晰,一旦出问题了也容易定位bug。
  • 相关阅读:
    asp.net log4net
    SQLServer客户端连接工具(支持2000,20005,2008)
    html中的table导出Excel
    贝叶斯网(2)Netica:从数据中学习CPT
    贝叶斯网(1)尝试用Netica搭建简单的贝叶斯网并使用贝叶斯公式解释各个bar的结果
    IIPP迷你项目(四)"Pong"
    Coursera课程《Machine Learning》学习笔记(week2)
    IIPP迷你项目(二)"Guess the Number!"
    Coursera课程《Machine Learning》学习笔记(week1)
    IIPP迷你项目(三)“Stopwatch: The Game”
  • 原文地址:https://www.cnblogs.com/cshao/p/1798340.html
Copyright © 2020-2023  润新知