我正在尝试对套索回归进行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值?