R: glmnet: сохранение и использование моделей 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

Что мне нужно сделать, чтобы модели в списке работали корректно? Спасибо за любую помощь.


person adam.888    schedule 05.09.2016    source источник


Ответы (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"))
person akrun    schedule 05.09.2016