【发布时间】:2017-01-11 06:48:29
【问题描述】:
我有一个 R 代码,其中包含经过训练的机器学习模型。现在我想对新数据进行预测。
当前方法:
Script code.R '[{"x1" : "1011", "x2" : "1031", "x4" : "0.65"}]'
我会得到答案,问题是加载和设置环境花费了太多时间
代码:
# Loading the library
suppressPackageStartupMessages(library(C50))
suppressPackageStartupMessages(library(jsonlite))
suppressPackageStartupMessages(library(plyr))
# Loading the trained model
model1 <- readRDS("model1.RDA")
x <- (args[1])
# Function which wraps prediction and son handling
output <- function(x) {
df <- fromJSON(x)
df[is.na(df)] <- 0
prediction <- predict.C5.0(model1, newdata = df, type = "class")
json_df <- toJSON(prediction)
return(json_df)
}
output(x)
问题:
我想使用 Rserve 并将参数传递给它,我不能 如何弄清楚?我应该做什么修改?
我知道添加 library(Rserve) 然后执行 run.Rserve() 但超出 我不知道怎么做?
【问题讨论】:
-
您的代码似乎不完整(缺少输出函数的右括号并且没有调用输出函数,您能否编辑您的问题。谢谢 :-)
-
@RYoda 已添加,谢谢!
-
我认为您基本上必须将代码拆分为客户端和服务器端脚本。服务器端:从您的源代码中删除
x分配和output函数调用行,并将此脚本与model1.RDA一起部署到服务器上的文件夹中。客户端:set x variable, RSconnect, RSserversource, RSassign x, RSeval...(详见RSclientpackage:cran.r-project.org/web/packages/RSclient/RSclient.pdf的文档) -
@RYoda 谢谢你,会去看看
-
Rserve 是基于 TCP/IP 的,而不是 HTTP (AFAIK),因此您需要一个客户端库(抱歉,我没有使用 Rserve w/o R 的经验)。请修改您的问题,因为您似乎想使用 R 客户端。