• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

基于R语言的算法发布

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

R语言开发的算法如何发布成服务供其他系统调用?

这里推荐使用opencpu操作。

一个R语言模型的落地应用有几种方式:可能是一个简单的分析报告,可能是将预测结果输出到数据库,即离线模型,也可能需要实时读入数据进行实时预测输出。第三种情况是最有用,也最难处理的情况。因为要把R和其它通用型语言进行整合并不容易。例如使用Rserve在java中整合R代码就需要开发人员即懂java也懂R,开发量会比较高。一种比较好的思路是将R计算部分作为一个API,其它语言时通过API来调用R的部分。

下面的例子就是一个很简单的预测iris种类。在mac系统中,基于opencpu框架完成,opencpu能将R语言的对象转为http的资源,极大的方便了R语言模型的部署。一共只需要四个步骤。

步骤1:建立模型
步骤2:模型写入R包
步骤3:将R包安装到opencpu服务器上
步骤4:通过API远程调用模型

第一步是R语言建模。
library(rpart)
m = rpart(Species~., data = iris)
save(m, file='model.rda')
模型保存为一个rda文件在硬盘上。

第二步是写一个R包,如今用rstudio写一个R包是非常简单的事了,建立好一个新项目test之后,在R代码中写入预测函数如下。
library(rpart)
predfunc = function(input){
  input = as.data.frame(input)
  result = predict.rpart(m,newdata = input,type='class')
  as.character(result)
}
可以在R里面验证一下函数是否正常。
newx = data.frame(Sepal.Length=5.1,
                  Sepal.Width=3.5,
                  Petal.Length=1.4,
                  Petal.Width=0.2)
predfunc(newx)
然后新建一个data目录,将rda文件放入目录中,build&reload去建立这个名为test的R包。

第三步是安装R包到opencpu服务器上,我事先在本机上安装了opencpu,只需要像安装普通R包一样安装即可。
install.packages(opencpu)
这样在第二步reload时就直接安装好了test的R包。

第四步是实验API调用是否成功。在终端里进R,调用opencpu,即library(opencpu)会自动启动服务,并显示
[httpuv] http://localhost:4678/ocpu
OpenCPU single-user server ready.

调用模型时,用curl实验即可。另开一个终端,输入
curl http://localhost:4678/ocpu/library/test/R/predfunc/json -H "Content-Type: application/json" -d '{"input" :[ {"Sepal.Length":1.1, "Sepal.Width" : 2.5, "Petal.Length":0.4, "Petal.Width":0.9}]}'

成功返回
[
    "setosa"
]

如果需要把这个模型提供给远程调用,需要安装服务器版本的opencpu。具体参见https://www.opencpu.org/posts/scoring-engine/


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
R语言:读取数据发布时间:2022-07-18
下一篇:
R语言的scale函数发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap