【发布时间】:2019-06-11 23:34:03
【问题描述】:
我在 R 中使用 glmnet 包为大学的一门学科工作。我开始使用 R,我需要帮助解决一些问题:
我需要做一个练习,我训练和测试 500 次,一些模型(OLS、Ridge 和 LASSO)。之后,我需要为 500 次迭代中的每一次存储 MSE。 在训练步骤中,我必须使用 5 折交叉验证。
所以我遇到了问题,因为我不知道如何编写正确的代码。
我需要知道如何以我可以使用 5 倍 cv 的方式配置 cv.glmnet,以及如何编写循环以进行 500 次迭代并存储每个迭代的 MSE。
非常感谢你,对不起我的英语!
#Generación de muestra de entrenamiento
ne <- 100
pe <- 100
listx<-list()
for(listx in 1:500) {
xtrain <- matrix (rnorm(ne*pe), ne, pe)
ytrain <- apply(xtrain[,1:pe], 1, sum) + rnorm(ne)
olsreg <- lm(ytrain~xtrain)
ridgereg <-cv.glmnet(xtrain, ytrain, type.measure = "mse", alpha=0, family="gaussian")
ridgeregpr <- predict(ridgereg, s=ridgereg$lambda.min, newx=xtest)
mseridge <-mean((ytest-ridgeregpr)^2)
lassoreg <-cv.glmnet(xtrain, ytrain, type.measure = "mse", alpha=1, family="gaussian")
lassoregpr <- predict(lassoreg, s=lassoreg$lambda.min, newx=xtest)
mselasso <-mean((ytest-lassoregpr)^2)
}
results <- data.frame()
【问题讨论】:
标签: r