在插入符号中获取交叉验证的 glmnet 模型的系数
get coefficients of cross-validated glmnet model in caret
如何在 R 的插入符包中获取交叉验证的 glmnet 模型的系数?
library(caret)
x = matrix(rnorm(500), ncol=10)
y = rnorm(100)
control = trainControl(
method="LOOCV",
allowParallel = TRUE,
number = nrow(sample_df),
verboseIter = FALSE,
returnData = FALSE
)
my_elasticnet <- train(x, y,
method = "glmnet",
preProc = c("center", "scale"),
trControl = control)
我想你忘了显示 sample_df 的代码。但是,假设您可以按如下方式访问它:
library(caret)
x = matrix(rnorm(500), ncol=10)
y = rnorm(100)
sample_df = cbind.data.frame(y,x)
control = trainControl(
method="LOOCV",
allowParallel = TRUE,
number = nrow(sample_df),
verboseIter = FALSE,
returnData = FALSE
)
my_elasticnet <- train(sample_df[2:11], sample_df$y,
method = "glmnet",
preProc = c("center", "scale"),
trControl = control)
my_elasticnet$finalModel$beta
如果您只看名字,您将获得有关最终模型的所有信息:
> names(my_elasticnet$finalModel)
[1] "a0" "beta" "df" "dim" "lambda" "dev.ratio" "nulldev"
[8] "npasses" "jerr" "offset" "call" "nobs" "lambdaOpt" "xNames"
[15] "problemType" "tuneValue" "obsLevels" "param"
编辑:回应评论
最终模型取决于您的 alpha 和 lambda 级别 select。这样的参数有66个。如果你想选择机器认为最好的那个,你可以这样做:
coef(my_elasticnet$finalModel, my_elasticnet$bestTune$lambda)
这只会给你一个你正在寻找的 11x1 矢量。
如何在 R 的插入符包中获取交叉验证的 glmnet 模型的系数?
library(caret)
x = matrix(rnorm(500), ncol=10)
y = rnorm(100)
control = trainControl(
method="LOOCV",
allowParallel = TRUE,
number = nrow(sample_df),
verboseIter = FALSE,
returnData = FALSE
)
my_elasticnet <- train(x, y,
method = "glmnet",
preProc = c("center", "scale"),
trControl = control)
我想你忘了显示 sample_df 的代码。但是,假设您可以按如下方式访问它:
library(caret)
x = matrix(rnorm(500), ncol=10)
y = rnorm(100)
sample_df = cbind.data.frame(y,x)
control = trainControl(
method="LOOCV",
allowParallel = TRUE,
number = nrow(sample_df),
verboseIter = FALSE,
returnData = FALSE
)
my_elasticnet <- train(sample_df[2:11], sample_df$y,
method = "glmnet",
preProc = c("center", "scale"),
trControl = control)
my_elasticnet$finalModel$beta
如果您只看名字,您将获得有关最终模型的所有信息:
> names(my_elasticnet$finalModel)
[1] "a0" "beta" "df" "dim" "lambda" "dev.ratio" "nulldev"
[8] "npasses" "jerr" "offset" "call" "nobs" "lambdaOpt" "xNames"
[15] "problemType" "tuneValue" "obsLevels" "param"
编辑:回应评论
最终模型取决于您的 alpha 和 lambda 级别 select。这样的参数有66个。如果你想选择机器认为最好的那个,你可以这样做:
coef(my_elasticnet$finalModel, my_elasticnet$bestTune$lambda)
这只会给你一个你正在寻找的 11x1 矢量。