R 如何剥离glm模型?
返回的对象包含R 如何剥离glm模型?,r,glm,R,Glm,返回的对象包含残差,拟合值,效果,qr$qr,线性。预测器,权重,加起来就是一个庞大的对象(如果输入足够大) 我该如何剥离它,以便像predict这样的东西仍然有效 理想情况下,我想要一个函数,它将返回一个小函数对象,相当于函数(x)predict(我的_模型,data.frame(x=x));类似于。的内容大多数模型组件都是描述性的,并且不是预测工作所必需的。辅助函数()可用于删除脂肪: stripGlmLR = function(cm) { cm$y = c() cm$model =
残差
,拟合值
,效果
,qr$qr
,线性。预测器
,权重
,加起来就是一个庞大的对象(如果输入足够大)
我该如何剥离它,以便像predict
这样的东西仍然有效
理想情况下,我想要一个函数,它将返回一个小函数对象,相当于函数(x)predict(我的_模型,data.frame(x=x))
;类似于。的内容大多数模型组件都是描述性的,并且不是预测
工作所必需的。辅助函数()可用于删除脂肪:
stripGlmLR = function(cm) {
cm$y = c()
cm$model = c()
cm$residuals = c()
cm$fitted.values = c()
cm$effects = c()
cm$qr$qr = c()
cm$linear.predictors = c()
cm$weights = c()
cm$prior.weights = c()
cm$data = c()
cm$family$variance = c()
cm$family$dev.resids = c()
cm$family$aic = c()
cm$family$validmu = c()
cm$family$simulate = c()
attr(cm$terms,".Environment") = c()
attr(cm$formula,".Environment") = c()
cm
}
现在,您可以将其应用于您的模型,使其大小减少5个以上数量级(在本例中):
traindata这可能会有帮助,我记得我回答了一个类似的问题,但结果是针对不同的回归函数。您可能仍然会发现它很有用,因为我描述了这个过程(我知道您并不害怕黑客攻击):
traindata <- data.frame(x = rnorm(1e6), y = rnorm(1e6))
testdata <- data.frame(x = rnorm(10))
mod1 <- glm(y~x, data= traindata)
mod2 <- stripGlmLR(mod1)
format(object.size(mod1), units = "Kb")
# [1] "492234.5 Kb"
format(object.size(mod2), units = "Kb")
# [1] "18.5 Kb"
all(predict(object = mod1, newdata = testdata) ==
predict(object = mod2, newdata = testdata))
# [1] TRUE