尝试从 glmnet 模型中提取系数 returns NULL 或 "type must be either "raw" 或 "prob"" 错误
Trying to extract coefficients from glmnet model returns NULL or "type must be either "raw" or "prob"" error
我是 运行 内置 infert
数据集上插入符号的 glmnet 模型,例如,
infert_y <- factor(infert$case) %>% plyr::revalue(c("0"="control", "1"="case"))
infert_x <- subset(infert, select=-case)
new.x <- model.matrix(~., infert_x)
# Create cross-validation folds:
myFolds <- createFolds(infert_y, k = 10)
# Create reusable trainControl object:
myControl_categorical <- trainControl(
summaryFunction = twoClassSummary,
classProbs = TRUE, # IMPORTANT!
verboseIter = TRUE,
savePredictions = TRUE,
index = myFolds
)
model_glmnet_pca <- train(
x = new.x,
y = infert_y,
metric = "ROC",
method = "glmnet",
preProcess=c("zv", "nzv","medianImpute", "center", "scale", "pca"),
trControl = myControl_categorical,
tuneGrid= expand.grid(alpha= seq(0, 1, length = 20),
lambda = seq(0.0001, 1, length = 100))
)
但是当我尝试获取系数时:
bestlambda <- model_glmnet_pca$results$lambda[model_glmnet_pca$results$ROC == max(model_glmnet_pca$results$ROC)]
coef(model_glmnet_pca, s=bestlambda)
returns:
NULL
我试过了:
coef.glmnet(model_glmnet_pca, s=bestlambda)
哪个returns:
Error in predict.train(object, s = s, type = "coefficients", exact = exact, :
type must be either "raw" or "prob"
但是当我调用 coef() 时,我的“类型”参数是否设置为“系数”?如果我尝试
coef.glmnet(model_glmnet_pca, s=bestlambda, type="prob")
它returns:
Error in predict.train(object, s = s, type = "coefficients", exact = exact, :
formal argument "type" matched by multiple actual arguments
我很困惑,谁能指出我做错了什么?
要从最佳模型中获取系数,您可以使用:
coef(model_glmnet_pca$finalModel, model_glmnet_pca$finalModel$lambdaOpt)
参见例如this link on using regularised regression models with caret
.
我是 运行 内置 infert
数据集上插入符号的 glmnet 模型,例如,
infert_y <- factor(infert$case) %>% plyr::revalue(c("0"="control", "1"="case"))
infert_x <- subset(infert, select=-case)
new.x <- model.matrix(~., infert_x)
# Create cross-validation folds:
myFolds <- createFolds(infert_y, k = 10)
# Create reusable trainControl object:
myControl_categorical <- trainControl(
summaryFunction = twoClassSummary,
classProbs = TRUE, # IMPORTANT!
verboseIter = TRUE,
savePredictions = TRUE,
index = myFolds
)
model_glmnet_pca <- train(
x = new.x,
y = infert_y,
metric = "ROC",
method = "glmnet",
preProcess=c("zv", "nzv","medianImpute", "center", "scale", "pca"),
trControl = myControl_categorical,
tuneGrid= expand.grid(alpha= seq(0, 1, length = 20),
lambda = seq(0.0001, 1, length = 100))
)
但是当我尝试获取系数时:
bestlambda <- model_glmnet_pca$results$lambda[model_glmnet_pca$results$ROC == max(model_glmnet_pca$results$ROC)]
coef(model_glmnet_pca, s=bestlambda)
returns:
NULL
我试过了:
coef.glmnet(model_glmnet_pca, s=bestlambda)
哪个returns:
Error in predict.train(object, s = s, type = "coefficients", exact = exact, :
type must be either "raw" or "prob"
但是当我调用 coef() 时,我的“类型”参数是否设置为“系数”?如果我尝试
coef.glmnet(model_glmnet_pca, s=bestlambda, type="prob")
它returns:
Error in predict.train(object, s = s, type = "coefficients", exact = exact, :
formal argument "type" matched by multiple actual arguments
我很困惑,谁能指出我做错了什么?
要从最佳模型中获取系数,您可以使用:
coef(model_glmnet_pca$finalModel, model_glmnet_pca$finalModel$lambdaOpt)
参见例如this link on using regularised regression models with caret
.