【发布时间】:2021-04-01 12:38:54
【问题描述】:
我正在尝试在 R 中同时为多个变量执行 Elastic Net。我有 15 个 Xi,我想找到使用每个变量作为回归量的弹性网络模型。对于一个 Xi 我可以执行
跟随并获得最优的alpha和lambda如下
A<-matrix(rnorm(36),nrow=10,ncol = 15)
colnames(A) <- c("X1", "X2", "X3", "X4", "X5", "X6","X7","X8","X9","X10","X11","X12","X13","X14","X15")
A #random data
library(glmnetUtils)
library(glmnet)
library(coefplot)
set.seed(1234)
# Train model.
fit <- cva.glmnet(X1 ~ ., data=A)
# Get alpha.
get_alpha <- function(fit) {
alpha <- fit$alpha
error <- sapply(fit$modlist, function(mod) {min(mod$cvm)})
alpha[which.min(error)]
}
# Get all parameters.
get_model_params <- function(fit) {
alpha <- fit$alpha
lambdaMin <- sapply(fit$modlist, `[[`, "lambda.min")
error <- sapply(fit$modlist, function(mod) {min(mod$cvm)})
best <- which.min(error)
data.frame(alpha = alpha[best], lambdaMin = lambdaMin[best])
}
get_model_params(fit)
我想同时为所有 Xi 执行此过程,并能够创建 2 个包含 a.所有最优min.lambda,b。所有最优alpha,以及使用最优alpha 和min.lambda 生成的系数列表。有人可以帮我做吗?
【问题讨论】:
标签: r loops apply glmnet regularized