11

当我使用以下 R 代码时,

model_glm=glm(V1~. , data=xx,family="binomial");
save(file="modelfile",model_glm);

模型文件的大小将与数据一样多,在我的情况下为 1gig。如何删除model_glm结果中的数据部分,所以只能保存一个小文件。

4

4 回答 4

11

model = FALSE在您的调用中设置glm应防止model.frame返回。此外,设置y = FALSE将阻止返回响应向量。x = FALSE是默认设置并防止model.matrix返回 。

这种组合应该缩小 glm 对象的大小。

当然,您也可以使用coef(model_glm)or 提取系数,使用标准误差,

summary(model_glm)$coef
于 2012-11-14T21:36:50.557 回答
8

我遇到了这个问题,我在生产中将 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
于 2015-01-23T21:30:29.210 回答
1

object.size()具有误导性,因为它忽略了环境属性。如果要评估真实大小,请使用:

length(serialize(model_glm, NULL))

除了存储的数据之外,如果您想显着减小 glm 的大小,请执行以下操作:

rm(list=ls(envir = attr(model_glm$terms, ".Environment")),
     envir = attr(model_glm$terms,
              ".Environment"))

这来自一篇非常详细的文章

于 2018-05-09T22:06:47.020 回答
0

您可以在保存之前将模型对象中的数据清空。我做了一个快速测试,仍然产生了预测。

model_glm$data <- NULL
于 2014-07-28T04:50:06.810 回答