【问题标题】:Calculate the ROC curve from the binary classification output从二元分类输出计算ROC曲线
【发布时间】:2020-09-19 21:52:17
【问题描述】:

我必须能够在二元分类问题上绘制 ROC 曲线,但作为预测变量,必须插入数字或有序向量,因为我已经执行了分类,所以我的预测变量是因子 (0,1)。

有没有办法解决这个问题?

rfCarseats

Call:
 randomForest(formula = Salesdic ~ ., data = train_Carseats, proximity = TRUE) 
               Type of random forest: classification
                     Number of trees: 500
No. of variables tried at each split: 3

        OOB estimate of  error rate: 20%
Confusion matrix:
    0  1 class.error
0 153 17   0.1000000
1  39 71   0.3545455

> prediction_rf_Carseats
  2   3   4   6  10  13  15  19  24  28  32  45  46  52  54  56  60  61  66  67  69  70  73  76  79  81 101 106 111 
  1   1   0   1   0   0   1   1   0   0   0   0   0   0   0   0   0   0   0   1   1   0   0   0   0   1   0   0   1 
116 121 128 130 139 143 149 155 161 162 163 164 167 168 171 172 176 179 186 188 189 190 191 194 195 201 203 204 206 
  0   0   0   0   1   0   0   1   0   0   0   0   0   0   0   1   0   1   0   0   0   1   1   1   1   0   0   0   0 
207 208 211 215 220 221 225 229 232 233 234 236 239 243 249 251 253 257 258 264 267 274 279 283 290 295 297 300 301 
  0   0   0   0   1   1   0   0   1   1   1   0   0   0   0   1   0   0   0   0   1   1   1   1   0   1   1   1   1 
304 306 307 308 311 312 316 318 321 323 326 331 332 336 338 339 340 346 353 356 362 363 369 370 372 374 376 385 388 
  1   0   0   0   0   0   0   0   0   1   1   0   0   0   0   0   1   0   1   1   0   0   1   1   0   0   0   1   0 
392 396 397 399 
  0   1   0   0 
Levels: 0 1

> train_Carseats$Salesdic
  [1] 1 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 1 0 1 0 1 0 1 0
 [57] 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 1 1 1 1 1 0 0 0 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 0 0 1 1 1 1 0 1
[113] 0 1 1 0 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 1 1 1
[169] 0 1 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 1 1 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 1
[225] 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1
Levels: 0 1

【问题讨论】:

  • 我不知道这个图是关于什么的,但您可以使用 as.numeric(as.character(test_Carseats$Salesdic)) 将您的因子转换为数值。
  • 感谢您的回复
  • 你真的应该尝试获得数字预测而不是二进制分类。请参阅stats.stackexchange.com/a/372977/36682 如果您向我们展示如何获得二进制预测,我们可以提供帮助。
  • 嗨@Calimo,感谢您的包裹!我以错误的形式问了错误的问题。真正的问题是您在链接中与我分享的内容。但尽管如此,我认为我已经解决了这个问题。从我有一个 randomForest 对象的事实开始,从输出中我可以继续使用以下代码plot.roc (train_Carseats $ Salesdic, rfCarseats $ votes [, 1]) 将响应值与森林中正确投票的树木的值一起获取。我重新表述了有问题的问题,如果您认为可以,我可以在主题中提出这个答案,以便您查阅
  • @GN_Agostino 是的,请

标签: r prediction roc


【解决方案1】:

编辑(问题已解决): 从我有一个 randomForest 对象这一事实开始,从输出中我可以继续执行以下代码:

library(pROC)
ROC_Carseats_RF <- roc(train_Carseats$Salesdic, rfCarseats$votes[ , 1],
                smoothed = TRUE,
                ci=TRUE, ci.alpha=0.9, stratified=FALSE,
                plot=TRUE, auc.polygon=TRUE, max.auc.polygon=TRUE, grid=TRUE,
                print.auc=TRUE, show.thres=TRUE)
plot.roc(ROC_Carseats_RF, print.auc = TRUE)

将响应值与森林中正确投票的树木的值考虑在内。

Plot is here

【讨论】:

    猜你喜欢
    • 2018-05-24
    • 2018-04-21
    • 2014-01-03
    • 2016-08-27
    • 2020-07-21
    • 2020-07-20
    • 2012-10-10
    • 2017-08-19
    • 1970-01-01
    相关资源
    最近更新 更多