【问题标题】:Plot ROC curve with sklearn for hard multi-class predictions使用 sklearn 绘制 ROC 曲线以进行硬多类预测
【发布时间】:2021-06-24 19:17:14
【问题描述】:

我将某些对象分类为 5 个类别,标签为 [0,1,2,3,4],由人类组成。

一组真实标签:true_label = [3, 4, 2, 1, 0, 2 ............, 3]

一组预测标签:predictions = [3, 4, 2, 2, 0, 2, ........., 3]

如何绘制具有如此硬类预测的 ROC 曲线? 绘制 ROC 曲线(使用 sklearn API)似乎需要根据概率进行预测,但人类的分类预测没有这样的概率。人类无法给出某个预测的“概率”,他/她只是认为对象是2,而不是2 with 93% probability

如何使用上面的 numpy 列表 true_labelpredictions 绘制 ROC 曲线?

【问题讨论】:

  • 我投票结束这个问题,因为它与help center 中定义的编程无关,它源于对相关基础理论的根本误解。
  • @desertnaut 你是说我们不能用上面的标签绘制 ROC 曲线吗?那么作者是如何绘制人类访问者的 ROC 曲线的,如图 2 和图 3 所示,在本文中:nature.com/articles/s41586-019-1799-6
  • 您链接到的文章在付费墙后面,所以我无法查看和评论...
  • 也就是说,请注意摘要中的表述“平均放射科医师的 AUC-ROC”;我的猜测是 - 他们平均 多个人类放射科医师提供的0/1分类,然后将此平均值视为(虚构的)“平均放射科医师”的概率输出.完全不是你在这里问的。
  • 您可以点击右侧的“图表”查看图表,无需支付文章费用。特别是“扩展数据图 2”,无需付费即可以更高的分辨率查看,显示了每位放射科医生的 ROC 曲线。如果没有放射科医生给出的“概率”,怎么能做到这一点?

标签: python machine-learning scikit-learn roc


【解决方案1】:

您不能使用预测标签绘制 ROC 曲线。

与任何 ROC 曲线函数一样,sklearn 的 roc_curve() 旨在接收一组真实标签和一组概率。

您可以找到更详细的答案in this question,但本质上,该函数使用每个预测概率作为阈值来产生一个预测标签数组。反过来,每个阈值都会产生一个真阳性率和一个假阳性率。对预测概率数组中的每个元素重复此过程会产生 ROC 曲线。

如果你只有预测的标签,我建议你测量准确率、真阳性率、假阳性率等。

from sklearn.metrics import confusion_matrix

confusion_matrix(y_true=true_label, y_pred=predictions)

【讨论】:

    猜你喜欢
    • 2020-08-15
    • 2021-03-03
    • 2021-01-06
    • 2018-12-24
    • 2014-09-27
    • 2022-01-13
    • 2019-02-27
    • 1970-01-01
    • 2019-12-03
    相关资源
    最近更新 更多