当我使用以下 R 代码时,
model_glm=glm(V1~. , data=xx,family="binomial");
save(file="modelfile",model_glm);
模型文件的大小将与数据一样多,在我的情况下为 1gig。如何删除model_glm结果中的数据部分,所以只能保存一个小文件。
当我使用以下 R 代码时,
model_glm=glm(V1~. , data=xx,family="binomial");
save(file="modelfile",model_glm);
模型文件的大小将与数据一样多,在我的情况下为 1gig。如何删除model_glm结果中的数据部分,所以只能保存一个小文件。
model = FALSE
在您的调用中设置glm
应防止model.frame
返回。此外,设置y = FALSE
将阻止返回响应向量。x = FALSE
是默认设置并防止model.matrix
返回 。
这种组合应该缩小 glm 对象的大小。
当然,您也可以使用coef(model_glm)
or 提取系数,使用标准误差,
summary(model_glm)$coef
我遇到了这个问题,我在生产中将 GLM 作为 R 的一部分运行,而 GLM 的大小大大减慢了我的速度。我发现我需要杀死的不仅仅是$data
. 这是我的帖子,下面有一个例子。
> object.size(sg)
96499472 bytes
> sg$residuals <- NULL
> sg$weights <- NULL
> sg$fitted.values <- NULL
> sg$prior.weights <- NULL
> sg$na.action<- NULL
> sg$linear.predictors <- NULL
> sg$fitted.values <- NULL
> sg$effects <-NULL
> sg$data <- NULL
> object.size(sg)
3483976 bytes
> sg$qr$qr <- NULL
> object.size(sg)
79736 bytes
object.size()
具有误导性,因为它忽略了环境属性。如果要评估真实大小,请使用:
length(serialize(model_glm, NULL))
除了存储的数据之外,如果您想显着减小 glm 的大小,请执行以下操作:
rm(list=ls(envir = attr(model_glm$terms, ".Environment")),
envir = attr(model_glm$terms,
".Environment"))
这来自一篇非常详细的文章
您可以在保存之前将模型对象中的数据清空。我做了一个快速测试,仍然产生了预测。
model_glm$data <- NULL