首页 > 解决方案 > 使用 sklearn 绘制 ROC 曲线以进行硬多类预测

问题描述

我将某些对象分类为 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 曲线?

标签: pythonmachine-learningscikit-learnroc

解决方案


您无法使用预测标签绘制 ROC 曲线。

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

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

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

from sklearn.metrics import confusion_matrix

confusion_matrix(y_true=true_label, y_pred=predictions)

推荐阅读