2016-09-05 7 views
2

Я могу сделать несколько разных моделей, используя glmnet. Затем я сохранил модели в списке, чтобы использовать этот список моделей в будущем.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

Если мы извлечь 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 элементов, мы можем цикл по list (lapply) и сделайте то же самое

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