使用rpart包的R中的ROC曲线?

时间:2015-06-13 11:34:30

标签: r classification predict roc

我分割了Train数据集和Test数据集。

我在R(仅列车集)中使用了一个包rpart来表示CART(分类树)。我想使用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")

2 个答案:

答案 0 :(得分:8)

prediction()包中的ROCR函数需要预测的“成功”概率和观察到的失败与成功的因素。要获得前者,您需要将predict(..., type = "prob")应用于rpart对象(即 "class")。但是,由于这会返回一个概率矩阵,每个响应类有一列,您需要选择“成功”类列。

不幸的是,您的示例无法重现我使用kyphosis包中的rpart数据进行说明:

library("rpart")
data("kyphosis", package = "rpart")
rp <- rpart(Kyphosis ~ ., data = kyphosis)

然后,您可以应用prediction()中的ROCR功能。在这里,我使用的是样本内(训练)数据,但同样可以应用于样本(测试数据):

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支持的任何其他图表和摘要。

ROCR plots

答案 1 :(得分:1)

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)

以上代码段适合您。

有关详细信息,请参阅链接: Classification Trees (R)