R:glmnet:从列表中保存和使用glmnet模型

时间:2016-09-05 10:44:49

标签: r glmnet

我可以使用glmnet制作许多不同的模型。 然后我将模型保存在列表中,以便将来使用时可以使用此模型列表。

library(glmnet)
x1=matrix(rnorm(100*20),100,20)
y1=matrix(rnorm(100*3),100,3)
fit1m=glmnet(x1,y1,family="mgaussian")

x2=matrix(rnorm(100*20),100,20)
y2=matrix(rnorm(100*3),100,3)
fit2m=glmnet(x2,y2,family="mgaussian")


x3=matrix(rnorm(100*20),100,20)
y3=matrix(rnorm(100*3),100,3)
fit3m=glmnet(x3,y3,family="mgaussian")


listmodels <-list(fit1m,fit2m,fit3m)
listmodels

但是,当我尝试从此列表中检索模型时,出现了类错误

fit1 <- listmodels[1]
fit1


xnew=matrix(rnorm(100*20),100,20)
pred1 <- as.data.frame(predict(fit1,newx=xnew),s="lambda.min")
pred1

要使列表中的模型正常工作,我需要做什么? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

如果我们正确地提取list元素,它将起作用,即'listmodels [1]'仍然是list,我们需要使用'listmodels [[1]]'来提取元素

fit1 <- listmodels[[1]]

xnew=matrix(rnorm(100*20),100,20)
pred1 <- as.data.frame(predict(fit1,newx=xnew),s="lambda.min")
pred1

如果我们想对所有list元素执行此操作,我们可以遍历listlapply)并执行相同的过程

lapply(listmodels, function(x) as.data.frame(predict(x, 
        newx = matrix(rnorm(100*20), 100, 20)), s = "lambda.min"))