首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将R模型序列化为JSON

将R模型序列化为JSON
EN

Stack Overflow用户
提问于 2016-05-15 01:51:21
回答 1查看 1.9K关注 0票数 5

有什么好的R包可以将预测模型和其他复杂对象转换成JSON吗?我从这个例子中得到了线性回归模型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
eruption.lm = lm(eruptions ~ waiting, data=faithful) 
newdata = data.frame(waiting=80)
predict(eruption.lm, newdata) 

我希望将eruption.lm模型序列化为JSON存储在某个地方,或者将其发送到某个外部系统,然后反序列化并进行预测。我和jsonlite封装试过了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
json<-serializeJSON(eruption.lm)
lin.model<-unserializeJSON(json)

predict(lin.model, newdata)

但是,jsonlite无法处理复杂对象-反序列化模型返回预测中的一个错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Error in eval(expr, envir, enclos) : could not find function "list"

是否有更好的包可以序列化/反序列化对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-15 03:11:39

您只需要帮助它记住terms的环境

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
attr(lin.model$terms, ".Environment") <- .GlobalEnv

predict(lin.model, newdata)

##       1 
## 4.17622 

我会把它作为增强请求提交给http://github.com/jeroenooms/jsonlite/issues

或者,您可以使用本机R二进制序列化:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
saveRDS(lin.model, "lin.model.rds")

predict(readRDS("lin.model.rds"), newdata)

##       1 
## 4.17622 

除非您绝对需要文本序列化方法,否则您可以:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
saveRDS(lin.model, file="lin.model.txt", ascii=TRUE)

predict(readRDS("lin.model.txt"), newdata)

##       1 
## 4.17622 

ascii=TRUE对对象进行文本十六进制表示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1f8b 0800 0000 0000 0003 ed5d c992 1cb9
91bd e797 cc1c 9806 381c db51 36a6 c35c
e61f 4a64 5153 3645 b255 2cb6 749a 6f1f
5fb0 bcc8 ca62 4b1a 33f5 25da 8c6d 8848
04fc f9f6 b004 10f5 870b 5d62 afa9 964b
4cb1 71b8 d456 2f91 2e99 8afc f421 5e5b
e510 73ef 9770 0d35 17aa 3d5f 6290 5fe3
850a c59c 2ef9 f2f5 e1cb e3f7 4bd4 27c6
bd18 2fff f69f 5f5f 1f5f 3e3e fef2 faef
f36e bdfc f5e1 e9f5 e9eb 9f2f 94d9 4554
1112 ae39 84dc 63d7 2287 de7a b2bb a975
... (lots more)

可以存储在二进制blobs不能存储的地方。

如果您需要一个可读的文本序列化方法,那么将上述建议的增强请求归档无疑是可行的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37236806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文