R中的ROC曲线使用rpart包?
Posted
技术标签:
【中文标题】R中的ROC曲线使用rpart包?【英文标题】:ROC curve in R using rpart package? 【发布时间】:2015-08-29 08:32:47 【问题描述】:我拆分了Train
数据集和Test
数据集。
我在 R(仅火车组)中为 CART(分类树)使用了包 rpart
。我想使用ROCR
包进行 ROC 分析。
变量是`n。使用'(响应变量... 1=是,0=否):
> Pred2 = prediction(Pred.cart, Test$n.use)
Error in prediction(Pred.cart, Test$n.use) :
**Format of predictions is invalid.**
这是我的代码。什么是问题?什么是正确的type
("class"
或"prob"
?
library(rpart)
train.cart = rpart(n.use~., data=Train, method="class")
Pred.cart = predict(train.cart, newdata = Test, type = "class")
Pred2 = prediction(Pred.cart, Test$n.use)
roc.cart = performance(Pred2, "tpr", "fpr")
【问题讨论】:
【参考方案1】:ROCR
包中的 prediction()
函数需要预测的“成功”概率以及观察到的失败与成功的因素。为了获得前者,您需要将predict(..., type = "prob")
应用于rpart
对象(即not "class"
)。但是,由于这会返回一个概率矩阵,每个响应类有一列,您需要选择“成功”类列。
不幸的是,作为您的示例不可重现,我使用来自 rpart
包的 kyphosis
数据进行说明:
library("rpart")
data("kyphosis", package = "rpart")
rp <- rpart(Kyphosis ~ ., data = kyphosis)
然后您可以应用来自ROCR
的prediction()
函数。在这里,我使用的是样本内(训练)数据,但同样可以应用于样本外(测试数据):
library("ROCR")
pred <- prediction(predict(rp, type = "prob")[, 2], kyphosis$Kyphosis)
你可以可视化ROC曲线:
plot(performance(pred, "tpr", "fpr"))
abline(0, 1, lty = 2)
或跨界的准确度:
plot(performance(pred, "acc"))
或ROCR
支持的任何其他图表和摘要。
【讨论】:
很棒的答案!您从哪里获得所有这些知识? 还有什么是“成功”类?对于kyphosis
数据集,present
的情况相当明显,但如果我们使用a
和b
结果。哪一个应该被指定为成功?
您的选择。两者都可以,您可以选择您认为更容易解释的那个。【参考方案2】:
library("ROCR")
Pred.cart = predict(train.cart, newdata = Test, type = "prob")[,2]
Pred2 = prediction(Pred.cart, Test$n.use)
plot(performance(Pred2, "tpr", "fpr"))
abline(0, 1, lty = 2)
上面的代码 sn-p 将为您工作。
更多详情请参考链接: Classification Trees (R)
【讨论】:
以上是关于R中的ROC曲线使用rpart包?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 r 中的 ROCR 包绘制 ROC 曲线,*只有分类列联表*
R语言使用pROC包绘制ROC曲线并使用smooth函数绘制平滑的ROC曲线(方法包括:binormaldensityfitdistrlogcondenslogcondens.smooth)