You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用caret+ranger训练随机森林计算AUC时出现参数重复匹配报错

报错原因

formal argument "probability" matched by multiple actual arguments 报错的核心是probability参数被重复传递给了ranger执行函数:

  • caret的train()接口调用ranger做分类任务时,会自动根据trainControl中的classProbs参数值,给底层ranger()传递对应的probability参数,不需要用户手动在train()的入参中重复声明
  • 你同时在train()入参与caret自动传参中设置了probability,触发了参数重复冲突

另外你原代码中trainControl的VerboseIter参数拼写错误,R大小写敏感,正确参数名为全小写的verboseIter。

解决步骤
  1. 调整trainControl配置:因为你需要输出概率计算AUC,需要在训练控制项中显式开启classProbs = TRUE,caret会自动给ranger传递probability = TRUE,无需手动设置
  2. 删除train()函数中手动添加的probability = TRUE参数
  3. 确认你的因变量mort_30为因子类型,否则分类概率输出会失效
修改后可运行代码
set.seed(40)
# 先确认因变量是因子,非因子要先转换
data.train$mort_30 <- as.factor(data.train$mort_30)

control.data <- trainControl(method="cv", 
                             number=10, 
                             sampling ="up", 
                             verboseIter= TRUE,
                             classProbs = TRUE, # 开启类别概率输出
                             summaryFunction = twoClassSummary) # 可选,用于直接输出AUC等二分类指标

rfGrid <- expand.grid(
  .mtry=2:6,
  .splitrule="gini",
  .min.node.size=c(250,500))

fit.dataup <- train(mort_30 ~ C_SEX+V_AGE+Hemoglobin+Thrombocytes+Leukocytes+CRP,
                    data=data.train,
                    method="ranger",
                    max.depth=10,
                    num.trees=500,
                    trControl=control.data,
                    tuneGrid=rfGrid,
                    importance="impurity",
                    verbose=TRUE,
                    metric = "ROC") # 可选,搭配twoClassSummary使用,按AUC选最优参数

内容的提问来源于stack exchange,提问作者Lærke Kjær

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:24:09