我想将一个插入符号训练的随机森林模型保存到文件中并将其重新加载到另一个程序中。我知道我可以通过saveRDS / readRDS编写/读取二进制文件来做到这一点,但我想要一个ASCII文件而不是二进制文件。我希望文件最小但仍可用于预测。类似于this的东西,但是对于rf而不是lm。谢谢
这是我的一个镜头:如果你只能传递文本参数而不是二进制结构(例如在保存为.rda
或.rds
文件的模型中找到),我想知道你是否可以传递对象的base64编码表示:
mdl <- lm(mpg ~ disp + cyl, data=mtcars)
saveRDS(mdl, file="model.rds")
那是我前面提到的二进制文件。由于您无法将其读入Power BI,因此请对其进行文本编码。我在这里使用base64enc
,但可能有其他方式可能更有效,更紧凑等等......我不是在这里提出这个主张。
library(base64enc)
writeLines(base64encode("model.rds"), con="model.rds.b64")
tf <- tempfile()
这个tf
对象将在Power BI和/或您的操作系统的正常“临时文件清理”方法中清理。下一个命令使用file=
,但它可以很容易地传递一个character
向量(长度为1,我相信),在你的R代码通过另一个方法给出这个对象的情况下:
base64decode(file="model.rds.b64", output=tf)
mdl2 <- readRDS(tf)
mdl
# Call:
# lm(formula = mpg ~ disp + cyl, data = mtcars)
# Coefficients:
# (Intercept) disp cyl
# 34.66099 -0.02058 -1.58728
identical(mdl, mdl2)
# [1] TRUE
虽然这是lm
而不是rf
,但它相当紧凑:
file.info("model.rds")$size # same as "tf"
# [1] 2637
file.info("model.rds.b64")$size
# [1] 3518
(毫不奇怪,base64编码在这里引入了33%的增长,这是expected。)