gpt4 book ai didi

r - 有没有办法将 lm() 对象 'compress' 用于以后的预测?

转载 作者:IT王子 更新时间:2023-10-28 23:33:11 25 4
gpt4 key购买 nike

有没有办法“压缩”一个 lm 类的对象,以便我可以将它保存到磁盘并稍后加载它以与 predict.lm 一起使用?

我有一个 lm 对象,保存后最终约为 142mb,我很难相信 predict.lm 需要所有原始观测值/拟合值/残差等来进行线性预测。我可以删除信息以使保存的模型更小吗?

我尝试将一些变量(fitted.values、residuals 等)设置为 NA,但似乎对保存的文件大小没有影响。

最佳答案

您可以使用 biglm 来拟合您的模型,biglm 模型对象小于 lm 模型对象。您可以使用 predict.biglm 创建一个函数,您可以将新数据设计矩阵传递给该函数,该矩阵返回预测值。

另一种选择是使用 saveRDS 来保存文件,文件看起来要小一些,因为它们的开销较小,是单个对象,不像 save 可以保存多个对象。

 library(biglm)
m <- lm(log(Volume)~log(Girth)+log(Height), trees)
mm <- lm(log(Volume)~log(Girth)+log(Height), trees, model = FALSE, x =FALSE, y = FALSE)
bm <- biglm(log(Volume)~log(Girth)+log(Height), trees)
pred <- predict(bm, make.function = TRUE)
save(m, file = 'm.rdata')
save(mm, file = 'mm.rdata')
save(bm, file = 'bm.rdata')
save(pred, file = 'pred.rdata')
saveRDS(m, file = 'm.rds')
saveRDS(mm, file = 'mm.rds')
saveRDS(bm, file = 'bm.rds')
saveRDS(pred, file = 'pred.rds')

file.info(paste(rep(c('m','mm','bm','pred'),each=2) ,c('.rdata','.rds'),sep=''))
# size isdir mode mtime ctime atime exe
# m.rdata 2806 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:24:23 2013-03-07 11:29:30 no
# m.rds 2798 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:29:30 2013-03-07 11:29:30 no
# mm.rdata 2113 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:24:28 2013-03-07 11:29:30 no
# mm.rds 2102 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:29:30 2013-03-07 11:29:30 no
# bm.rdata 592 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:24:34 2013-03-07 11:29:30 no
# bm.rds 583 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:29:30 2013-03-07 11:29:30 no
# pred.rdata 1007 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:24:40 2013-03-07 11:29:30 no
# pred.rds 995 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:27:30 2013-03-07 11:29:30 no

关于r - 有没有办法将 lm() 对象 'compress' 用于以后的预测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15260429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com