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

随机森林模型AUC计算语法咨询及代码完善求助

随机森林模型AUC计算语法咨询及代码完善求助

嗨,我看到你在计算随机森林模型的AUC时卡壳了,而且预测部分的代码还没写完,我来帮你把这部分补全并详细说明AUC的计算逻辑~

首先,咱们先把预测部分的代码补全,关键要注意:AUC是基于预测概率计算的,不是类别预测结果,所以得用type="prob"参数来获取模型输出的概率值:

## 6
## Produce predictions based on RF model
# 生成测试集的概率预测(提取类别1的概率,对应你的High_sdLDL阳性类)
rf_test_predictions <- predict(rf_fit, newdata = sdLDL_test, type = "prob")[, "1"]

接下来就是用你已经加载的pROC包计算AUC了,直接用roc()函数就能搞定,还能顺便画ROC曲线:

## 7
## 计算并查看AUC
# 构建ROC对象,传入真实标签和预测概率
roc_result <- roc(response = sdLDL_test$High_sdLDL, predictor = rf_test_predictions)

# 直接打印AUC值
cat("随机森林模型的AUC值为:", roc_result$auc, "\n")

# 打印完整的ROC分析结果(包含阈值、灵敏度、特异度等)
print(roc_result)

# 可选:绘制ROC曲线直观展示
plot(roc_result, main = "随机森林模型ROC曲线", col = "darkblue", lwd = 2)
abline(a = 0, b = 1, lty = 2, col = "gray") # 绘制参考线

最后给你提几个小提醒,避免踩坑:

  • 你之前把High_sdLDL转成指定水平的因子factor(levels = c(0, 1))这一步非常重要,能保证训练集和测试集的标签水平完全一致,避免预测时出现水平不匹配的错误。
  • 如果后续想优化随机森林模型(比如调整树的数量、变量重要性评估),可以在train()函数里通过trControl或者tuneGrid参数设置,比如想输出变量重要性的话,可以在train里加importance = TRUE(对应ranger的参数)。
  • 要是你想直接用caret的内置函数评估模型,也可以在train()的时候设置metric = "ROC",并在trControl里指定summaryFunction = twoClassSummary,这样训练过程中就会自动计算AUC,比如:
# 示例:训练时直接评估AUC
ctrl <- trainControl(method = "cv", summaryFunction = twoClassSummary, classProbs = TRUE)
rf_fit_with_auc <- train(High_sdLDL ~ Age + Is_Male + BMI + SBP + DBP + family_history_MI + family_history_sudden_death,
                         data=sdLDL_rem, 
                         method = "ranger",
                         metric = "ROC",
                         trControl = ctrl,
                         importance = TRUE)

这样训练完成后,rf_fit_with_auc的结果里就会包含交叉验证的AUC值了,适合在模型调参时参考~

备注:内容来源于stack exchange,提问作者Gabriel Odok

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 12:43:10