• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      一種混合編程技術(shù)在宏觀經(jīng)濟(jì)監(jiān)測(cè)預(yù)警系統(tǒng)中的應(yīng)用

      2018-01-28 23:16:04許傳本
      電子技術(shù)與軟件工程 2017年18期
      關(guān)鍵詞:R語(yǔ)言

      許傳本

      摘要

      R語(yǔ)言具有強(qiáng)大的數(shù)據(jù)處理功能,Java語(yǔ)言廣泛應(yīng)用于數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的開發(fā),兩者互補(bǔ)結(jié)合的混合編程在工程實(shí)踐中具有重要的意義。本文以某市宏觀經(jīng)濟(jì)監(jiān)測(cè)預(yù)警系統(tǒng)為背景,從Java調(diào)用R語(yǔ)言兩種方式的角度,深入研究了它們之間混合編程的原理和實(shí)現(xiàn)機(jī)制,并且給出了具體條件下的混合編程方法和步驟。

      【關(guān)鍵詞】R語(yǔ)言 混合編程 Java

      1引言

      R語(yǔ)言是一款可以對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析的開源軟件包,同時(shí)也是一個(gè)可以進(jìn)行交互數(shù)據(jù)分析平臺(tái)。它提供時(shí)間序列分析方法和圖形技術(shù),具有高度可拓展。R語(yǔ)言內(nèi)置包括統(tǒng)計(jì)分析、數(shù)據(jù)可視化在內(nèi)的有豐富的內(nèi)置的功能,這些功能給在數(shù)值計(jì)算、金融應(yīng)用、工業(yè)系統(tǒng)仿真等領(lǐng)域得到了廣泛的應(yīng)用。進(jìn)入大數(shù)據(jù)時(shí)代,R語(yǔ)言成為數(shù)據(jù)挖掘領(lǐng)域的重要工具。JAVA是面向?qū)ο缶幊陶Z(yǔ)言,它具有簡(jiǎn)單性、面向?qū)ο?、分布式、健壯性、安全性、平臺(tái)獨(dú)立與可移植性、多線程、動(dòng)態(tài)性等特點(diǎn),但JAVA語(yǔ)言在數(shù)值計(jì)算方面的能力卻不突出,特別是對(duì)數(shù)組矩陣數(shù)據(jù)的處理速度緩慢。

      在本文中的宏觀經(jīng)濟(jì)預(yù)警監(jiān)測(cè)系統(tǒng)是基于Java語(yǔ)言開發(fā)的,系統(tǒng)在不同的階段調(diào)用R編寫的預(yù)測(cè)模型獲得預(yù)測(cè)結(jié)果并展示,這樣充分利用R語(yǔ)言在統(tǒng)計(jì)分析方面的優(yōu)勢(shì),降低程序設(shè)計(jì)的復(fù)雜度;同時(shí)也產(chǎn)生了R和Java混合編程的問題。因此,本文基于R和Java語(yǔ)言開發(fā)環(huán)境Eclipse,在Windows平臺(tái)下就它們之間的混合編程問題從JAVA調(diào)用R語(yǔ)言的方式進(jìn)行深入研究并舉例說明。

      2R安裝及配置

      (1)下載安裝R在R官網(wǎng)的CRAN站點(diǎn)選擇下載R語(yǔ)言安裝程序R-3.4.1-win.exe,并運(yùn)行安裝程序。Rgui.exe作為標(biāo)準(zhǔn)WindowsGUI可執(zhí)行文件,并提供R控制臺(tái)在自己的窗口。

      (2)配置forecast包R語(yǔ)言是以軟件包的形式提供不同的功能,forecast包提供了時(shí)間序列預(yù)測(cè)分析法,其中包括指數(shù)平滑、自動(dòng)ARIMA建模等預(yù)測(cè)模型。

      3Java調(diào)用R語(yǔ)言

      Java調(diào)用R語(yǔ)言的方式主要有兩種:JRI調(diào)用和Rserve調(diào)用。

      3.1JRI調(diào)用

      JRI是一個(gè)Java/R接口,是用于java調(diào)用R語(yǔ)言的軟件包,可以將Java內(nèi)部的R程序作為單個(gè)線程運(yùn)行。它將R動(dòng)態(tài)鏈接庫(kù)加載到Java中,同時(shí)可以為R功能提供JavaAPI。它支持對(duì)R函數(shù)的簡(jiǎn)單調(diào)用和完全運(yùn)行的REPL。使用JRI需要在R里安裝rJava擴(kuò)展包。目前JRI己經(jīng)被包含在rJava中。JRI配置需要3個(gè)步驟:

      (1)運(yùn)行RGUIwindow程序,在R控制臺(tái)輸入命令installed.packages(“rJava”)下載rJava包到R-3.4.1的library文件夾下rJava子文件夾。rJava的子文件夾jri有4個(gè)文件:jri.DLL、JRI.jar、JRIEngine.jar、REngine.jar,其中jri.DLL為動(dòng)態(tài)鏈接庫(kù)文件,用于連接RGUI本地庫(kù)文件;而JRLjar、JRIEngine.jar、REnginejar3個(gè)用于java編寫調(diào)用R的客戶端程序。

      (2)在系統(tǒng)變量Path添加jri.DLL的文件路徑;在系統(tǒng)變量Classpath加上JRI.jar文件路徑。

      (3)在web項(xiàng)目中l(wèi)ib中加入JRI.jar,JRIEngine.jar,REngine.jar。

      JRI調(diào)用過程是:Java客戶端實(shí)例化,通過掛接到調(diào)用此構(gòu)造函數(shù)的現(xiàn)有的初始化R實(shí)例來創(chuàng)建新引擎;調(diào)用引擎實(shí)例的eval()方法解析預(yù)測(cè)模型R表達(dá)式并返回結(jié)果。

      己知某市2008-2010年12個(gè)月的GDP產(chǎn)值進(jìn)行HoltWinter三參數(shù)指數(shù)平滑,并預(yù)測(cè)下一年12個(gè)月的產(chǎn)值的R算法實(shí)現(xiàn)的源代碼文件forecast.R,文件內(nèi)容如下:

      library(forecast)

      x<-1234568159627769090117154040

      401009105512123259

      3133561371411152251025487418528159627769090117154040

      401009105512123259313356137141115225102548081596277690

      90117154040401009105512123259313356137141115225102548train<-scan(text=x)

      timeseriesl<-ts(train,frequency=12,start

      =c(2008,l))

      timeseries2<-HoltWinters(timeseries1)

      下面以JRI調(diào)用R算法實(shí)現(xiàn)源代碼為例,說明JRI調(diào)用的步驟和過程:

      PublicclassJRIClientForHgimplements

      RMainLoopCallbacks{

      Publicstaticvoidmain(String[]args){

      Renginere=newRengine(a

      rgs,tme,newJRIClientForHg());//創(chuàng)建R計(jì)算引

      if(!re.waitFor()){return;}

      re.eval("source("d:\\

      forecast.R")");//加載R算法模型

      double[]results=re.

      eval("timeseries2$fitted").asDoubleArray();//預(yù)測(cè)結(jié)果endprint

      }}

      此方法可以實(shí)現(xiàn)Java與R語(yǔ)言之間的調(diào)用。其優(yōu)點(diǎn)是高效,缺點(diǎn)是緊耦合,擴(kuò)展受限,過度依賴rJava的版本,接口程序無法重用。

      3.2Rserve調(diào)用

      Rserve是一個(gè)基于TCP/IP協(xié)議的,允許R語(yǔ)言與其他語(yǔ)言(如C/C++,Java、PHP等)通信的C/S結(jié)構(gòu)的程序。在本文的宏觀經(jīng)濟(jì)預(yù)警系統(tǒng)中,不同的時(shí)間段對(duì)經(jīng)濟(jì)指標(biāo)進(jìn)行統(tǒng)計(jì)建模并返回的結(jié)果作為業(yè)務(wù)系統(tǒng)數(shù)據(jù)可視化的數(shù)據(jù)源,Rserve可以將R內(nèi)置的強(qiáng)大的計(jì)算功能以后臺(tái)服務(wù)的形式供異構(gòu)平臺(tái)調(diào)用。使用Rserve實(shí)現(xiàn)Java語(yǔ)言與R的通信需要3個(gè)步驟:

      (1)在RGUI的R控制臺(tái)輸入指令install.packages(”Rserve”),下載安裝Rserve包。

      (2)在RGUI的R控制臺(tái)輸入指令Rserve(),出現(xiàn)StartingRserve提示說明啟動(dòng)Rserve成功。

      (3)編寫Java客戶端,將REngine.jar、RserveEngine.jar添加到j(luò)ava項(xiàng)目的編譯路徑中。

      啟動(dòng)Rserve服務(wù)是實(shí)現(xiàn)Rserve調(diào)用的前提條件,啟動(dòng)服務(wù)是通過在R控制臺(tái)中執(zhí)行Rserve()語(yǔ)句來單獨(dú)啟動(dòng)一個(gè)守護(hù)進(jìn)程作為Rserve實(shí)例,其默認(rèn)端口6311。Java客戶端通過實(shí)例化RConnection對(duì)象與Rserve實(shí)例建立TCP/IP連接,預(yù)測(cè)模型的R語(yǔ)言算法實(shí)現(xiàn)源碼內(nèi)容轉(zhuǎn)化字符串作為RConnection對(duì)象的eval方法實(shí)參傳入,由R計(jì)算引擎解析、編譯并返回計(jì)算結(jié)果。

      下面以Rserve方式調(diào)用R算法實(shí)現(xiàn)源代碼為例,說明調(diào)用的步驟和過程:

      PublicclassRserveClientForHg{

      Publicstaticvoidmain(String[]args){

      RConnectionrc=new

      RConnection();//創(chuàng)建RConnection對(duì)象

      rc.eval("source(d:\forecast.

      R)");//加載R算法模型

      double[]results=rc.

      eval(”timeseries2$fitted").asDoubles();//預(yù)測(cè)結(jié)果

      }

      4結(jié)論

      在本文中,以上介紹了R語(yǔ)言和JAVA在native環(huán)境和網(wǎng)絡(luò)環(huán)境上混合編程方法,并通過實(shí)例介紹了如何實(shí)現(xiàn)R語(yǔ)言和JAVA混合編程,著重講了混合編程的關(guān)鍵之處在于數(shù)據(jù)的傳輸,通過混合編程可以降低程序設(shè)計(jì)復(fù)雜度,同時(shí)提高程序的運(yùn)行速度。由此可見使用不同編程語(yǔ)言進(jìn)行混合編程,可以充分各語(yǔ)言的優(yōu)點(diǎn),優(yōu)化了程序設(shè)計(jì),提高軟件運(yùn)行效率,混合編程將會(huì)有更大的現(xiàn)實(shí)意義和發(fā)展空間,基于Rserve的遠(yuǎn)程調(diào)用方式實(shí)現(xiàn)R語(yǔ)言和JAVA混合編程具有優(yōu)勢(shì)。

      參考文獻(xiàn)

      [1]李國(guó)軍.基于R語(yǔ)言多元分析的教育統(tǒng)計(jì)應(yīng)用研究[J].鞍山師范學(xué)院學(xué)報(bào),2015,04,17(02):69-74.

      [2]夏成鋒.基于COM及Java-COM橋的Java與Matlab混合編程[J].現(xiàn)代計(jì)算機(jī),2015-12:100-102.

      [3]徐啟猛.交互式語(yǔ)言開發(fā)工具的設(shè)計(jì)與實(shí)現(xiàn)[D].吉林大學(xué)碩士學(xué)位論文,2011.

      [4]王燕.時(shí)間序列分析-基于R[M].北京:中國(guó)人民大學(xué)出版社,2015(09):01.endprint

      猜你喜歡
      R語(yǔ)言
      基于GPS軌跡數(shù)據(jù)進(jìn)行分析改善城市交通擁擠
      基于R語(yǔ)言的Moodle平臺(tái)數(shù)據(jù)挖掘技術(shù)的研究
      基于R語(yǔ)言的湖南產(chǎn)業(yè)結(jié)構(gòu)對(duì)其經(jīng)濟(jì)增長(zhǎng)貢獻(xiàn)分析
      商(2016年24期)2016-07-20 08:03:39
      注重統(tǒng)計(jì)思維培養(yǎng)與應(yīng)用為主導(dǎo)的生物統(tǒng)計(jì)學(xué)課程建設(shè)
      考試周刊(2016年15期)2016-03-25 04:09:43
      人民幣匯率的均值回復(fù)檢驗(yàn)及Hurst指數(shù)計(jì)算
      R語(yǔ)言及ggplot2在環(huán)境空氣監(jiān)測(cè)數(shù)據(jù)可視化中的應(yīng)用
      陈巴尔虎旗| 蕲春县| 衡水市| 施甸县| 施秉县| 扶沟县| 乐都县| 奈曼旗| 天门市| 和静县| 虞城县| 祥云县| 友谊县| 河间市| 松阳县| 榆中县| 海兴县| 巴中市| 关岭| 昌平区| 林甸县| 达尔| 精河县| 固安县| 珠海市| 沙坪坝区| 盐边县| 南投市| 互助| 奈曼旗| 马鞍山市| 山阴县| 安平县| 酉阳| 昆明市| 琼海市| 利辛县| 鲁甸县| 永州市| 泉州市| 铜梁县|