我想将经过脱字符号训练的随机森林模型保留到一个文件中,然后将其重新加载到另一个程序中。我知道我可以通过通过saveRDS / readRDS写入/读取二进制文件来做到这一点,但我想使用ASCII文件而不是二进制文件。 我希望文件尽可能小,但仍可用于预测。 与this类似,但用于rf而不是lm。 谢谢
答案 0 :(得分:1)
这是我的一招:如果您只能传递文本参数而不能传递二进制结构(例如在保存为.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()
对于Power BI和/或您的操作系统,将使用常规的“临时文件清除”方法清除此tf
对象。下一个命令使用file=
,但是在通过另一种方法为您的R代码提供此对象的情况下,也可以很容易地将其传递给character
向量(长度为1)。 / p>
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。)