r - 尝试从 glmnet 模型中提取系数返回 NULL 或 "type must be either "raw"或 "prob""错误

标签 r r-caret glmnet coefficients

我正在内置 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)

返回:

NULL

我尝试过:

coef.glmnet(model_glmnet_pca, s=bestlambda)

返回:

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")

它返回:

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 .

关于r - 尝试从 glmnet 模型中提取系数返回 NULL 或 "type must be either "raw"或 "prob""错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64208462/

相关文章:

r - 如果使用公式而不是 x,y 调用 caret::train 函数,为什么会产生错误?

r - 使用插入符号库修剪树返回复杂的树

r - 多个ggplot线性回归线

r - 跨数据帧的行 NA 进行插值

r - 如何使用 R 中的插入符号绘制多标签 SVM 问题的决策边界

r - Glmnet 与intercept=TRUE 相比,intercept=FALSE 不同,并且对于x 中的截距,percentage.factor=0

r - glmnet 错误 (nulldev == 0) 停止 ("y is constant; gaussian glmnet fails at standardization step")

r - 如何使用 R 中的 caret 包训练具有偏移项的 glmnet 模型(泊松族)?

r - 快速问题 : alternatives to a short but a bit involved code

r - 如何在空间上将不同系列的地毯图分开