如何得出灵敏度和特异性的ROC?

时间:2018-12-24 16:46:08

标签: python scikit-learn roc auc

对于特异性= 1-FPR 我将代码更改如下:

plt.plot(1-fpr, tpr, 'b', label = 'AUC = %0.2f' % roc_auc)

但是这个数字似乎不对。 enter image description here

这就是我在纸上看到的。 enter image description here

1 个答案:

答案 0 :(得分:2)

您对ROC曲线的理解有误。 ROC曲线绘制了不同阈值下的真实阳性率(敏感性)tpr = tp / (tp + fn),再加上了阴性阳性率(1-特异性)1 - (tn / (tn + fp)。现在,我看到您的标题表明您想要“敏感性和特异性的ROC”,但实际上不存在这样的内容。解决敏感性和特异性的方法是通过ROC曲线。

为了获得ROC曲线,请将图更改为:

plt.plot(fpr, tpr, 'b', label = 'AUC = %0.2f' % roc_auc)

您可以从上面的说明中了解如何计算误报率和真正率。

然后,当解释ROC曲线时,您希望将分类器放置在尽可能靠近左上角的位置,以指示低的假阳性率(高特异性)和高的真实阳性率(高灵敏度)。话虽如此,假阳性率不代表特异性,而代表阴性。这就是为什么您希望它最小化的原因。

最后但并非最不重要的一点是,当涉及ROC曲线时,常常使人们感到困惑的情况是,在X轴上有1 - specificity而不是specificity。发生这种情况时,值的方向相反(如图中所示),因此它从1变为0,而不是0变为1。