使用 rocr 包的决策树 ROC 曲线

Posted

技术标签:

【中文标题】使用 rocr 包的决策树 ROC 曲线【英文标题】:ROC curve for decision trees using rocr package 【发布时间】:2016-05-26 02:19:23 【问题描述】:

我使用rpart 包来开发我的树并预测模型。最后,为了绘制 ROC 曲线,我尝试使用 rocr 包。抱歉,无法使用内置数据集复制它。请找到我使用的 csv 的链接:

Wine Quality.csv

现在请看我的代码:

#setting up data
data<- read.csv(file.choose())
quality_binary <- ifelse(wine_quality >5,"high","low")
data <- data.frame(data,quality_binary)

#re shuffling the data
set.seed(9850)
g <- runif(nrow(data))
datar<- data[order(g),]
#removing the wine quality column since it has to be predicted
datar <- datar[-12]

library(rpart)  
library(rpart.plot)
library(cvTools) 
library(caret)
library(tree)

k <- 10 # setting the value for 10 fold validation 

folds <- cvFolds(NROW(datar), K=k)
datar$holdoutpred <- rep(0,nrow(datar))

for(i in 1:k)

train <- datar[folds$subsets[folds$which != i], ] #training set
validation <- datar[folds$subsets[folds$which == i], ] #validation set

#tree model
tree_model_rpart_gini = rpart(quality_binary~.,data = train,
        parms = list(split = "information"), method  = "class")
rpart.plot(tree_model_rpart_gini,type = 3,extra = 101)

#prediction
pred_model_rpart_gini <- predict(tree_model_rpart_gini,   
newdata=validation, type="class")

datar[folds$subsets[folds$which == i], ]$holdoutpred <-   
pred_model_rpart_gini



#plotting ROC curve

library(ROCR)
 pred1 <- prediction(predict(datar$pred_model_rpart_gini),   
 datar$quality_binary)
 perf1 <- performance(pred1,"tpr","fpr")
 plot(perf1)

我的错误是:

pred1 <- prediction(predict(datar$pred_model_rpart_gini),   
datar$quality_binary)
Error in UseMethod("predict") : 
no applicable method for 'predict' applied to an object of class "NULL"

【问题讨论】:

这是不可重现的。尝试使用一些内置数据集(例如 mtcars)创建一棵树,并在此处发布您的代码。 如何在评论中发布代码 改为编辑您的问题。 从不在评论中发布代码。使用edit 按钮。 在您之前的这个问题的副本中,您的代码仍然运行得更好吗?现在你已经完全破坏了它......Decision tree classification and accuracy estimation using 10 fold cross validation 【参考方案1】:

datar$pred_model_rpart_giniNULL 即未定义。

你可能打算改用pred_model_rpart_gini(不是datar$)?

【讨论】:

对不起,不明白。你能解释一下吗? 那里有一个复制和粘贴错误,需要修复。如果你在一个地方重命名,你必须在所有地方重命名。

以上是关于使用 rocr 包的决策树 ROC 曲线的主要内容,如果未能解决你的问题,请参考以下文章

如何解释决策树的 ROC AUC 曲线的阈值?

ROCR 包 - 逻辑回归以外的分类算法

使用 ROCR 包的 R 中的 ROC 曲线

如何使用 ROCR 提取平均 ROC 曲线预测?

R中的ROC曲线使用rpart包?

使用 scikit learn 的离散分类器的 ROC 曲线