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

使用R语言tree包绘制决策树ROC曲线:如何获取预测概率?

解决tree包获取分类预测概率的问题

你遇到的问题是因为predict.tree()函数默认返回的是预测类别(也就是你说的"预测响应"),而不是类别概率。要获取概率,只需要在调用predict()时指定type参数即可。

具体修改步骤:

  • 当你调用predict()时,添加type = "vector"参数,这样就会返回每个样本属于每个类别的概率矩阵:
# 假设你的测试集是dd[-learn, ],修改predict代码如下
tree.test.prob <- predict(tree.dd, newdata = dd[-learn, ], type = "vector")
  • 这个矩阵的列对应你的因变量Status的两个类别("good"和"bad"),每一行对应一个测试样本的概率值。比如你可以提取"bad"类的概率来绘制ROC曲线:
# 提取"bad"类的概率(列名取决于你的类别顺序,可通过colnames(tree.test.prob)查看)
bad_prob <- tree.test.prob[, "bad"]

用概率绘制ROC曲线的示例(以pROC包为例):

如果你还没安装pROC包,先安装:

install.packages("pROC")

然后绘制ROC曲线:

library(pROC)
# 构建ROC对象,response是测试集的真实标签,predictor是预测概率
roc_curve <- roc(response = dd[-learn, ]$Status, predictor = bad_prob)
# 绘制ROC曲线
plot(roc_curve, main = "ROC Curve for Tree Model")

补充说明:

  • predict.tree()的type参数还有其他选项:type = "class"是默认值,返回预测类别;type = "tree"会返回树结构,一般用不到。
  • 确保你的因变量Status是因子类型(tree包处理分类问题时要求因变量为因子),如果不是的话,可以先转换:
dd$Status <- as.factor(dd$Status)

内容的提问来源于stack exchange,提问作者ecab

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:09:04