【问题标题】:ROC curve in R using rpart package?R中的ROC曲线使用rpart包?
【发布时间】: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")

【问题讨论】:

    标签: r classification predict roc


    【解决方案1】:

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

    不幸的是,作为您的示例不可重现,我使用来自 rpart 包的 kyphosis 数据进行说明:

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

    然后您可以应用来自ROCRprediction() 函数。在这里,我使用的是样本内(训练)数据,但同样可以应用于样本外(测试数据):

    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 的情况相当明显,但如果我们使用ab 结果。哪一个应该被指定为成功?
    • 您的选择。两者都可以,您可以选择您认为更容易解释的那个。
    【解决方案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)

    【讨论】:

      猜你喜欢
      • 2020-10-05
      • 2012-07-13
      • 1970-01-01
      • 2019-02-27
      • 2012-07-10
      • 1970-01-01
      • 2017-06-19
      • 1970-01-01
      • 2013-09-28
      相关资源
      最近更新 更多