套索回归的K折交叉验证

时间:2020-06-23 11:15:27

标签: r glmnet k-fold

我正在尝试对套索回归进行k倍交叉验证,并且我的代码有问题。 我将mtcars数据集和mpg用作所有其他变量的函数,并且我想使用9:1训练数据和测试数据进行简历。这是我编写的代码。

library(glmnet)
library(caret)
x=as.matrix(mtcars[,2:ncol(mtcars)])
y=mtcars$mpg
x=apply(x,2,scale)
y=scale(y)

set.seed(123)
index<-sample(c("train","test"),size=nrow(mtcars),replace=T,prob=c(0.9, 0.1))
table(index)
train<-mtcars[index=="train",]
test<-mtcars[index=="test",]
lambda_seq <- 10^seq(2, -2, by = -.1)

set.seed(123)
cv_list<-createFolds(train$mpg,k=10)

rmse_m<-c()
 for(i in 1:length(cv_list)){
     valid_index<-cv_list[[i]]
     cv_valid_set<-train[valid_index,]
     cv_train_set<-train[-valid_index,]
     fit<-glmnet(x,y,alpha=1, family="gaussian", lambda=lambda_seq)
     fit_pre<-predict(fit,x)
     rmse_m<-c(rmse_m, sum((fit_pre - cv_valid_set)^2))
}

,此代码返回我从未想到的奇怪输出。如何修复它才能正常工作以获得正确的mse值?

0 个答案:

没有答案