如何绘制灵敏度和特异性的ROC?
How to draw ROC of sensitivity and specificity?
特异性 = 1 - FPR
我改了代码如下:
plt.plot(1-fpr, tpr, 'b', label = 'AUC = %0.2f' % roc_auc)
但是这个数字好像不对。
这是我在纸上看到的。
你对ROC曲线的理解有误。 ROC 曲线绘制了不同阈值下的真阳性率(灵敏度)tpr = tp / (tp + fn)
与假阳性率(1 - 特异性)1 - (tn / (tn + fp)
。现在,我看到您的标题表明您想要 'ROC of sensitivity and specificity' 但实际上不存在类似的东西。解决灵敏度和特异性的方法是通过 ROC 曲线。
为了获得 ROC 曲线,将绘图更改为:
plt.plot(fpr, tpr, 'b', label = 'AUC = %0.2f' % roc_auc)
你可以从上面的解释中看到如何计算假阳性率和真阳性率。
然后,在解释 ROC 曲线时,您希望分类器尽可能靠近左上角,以指示低假阳性率(高特异性)和高真阳性率(高灵敏度)。也就是说,假阳性率并不代表特异性,而是特异性的负值。这就是为什么你希望它是最小的。
最后但并非最不重要的一点是,当涉及到 ROC 曲线时,人们经常会感到困惑的情况是 X 轴上没有 1 - specificity
,而是 specificity
。发生这种情况时,值的方向会反转(如图所示),因此它会从 1 变为 0 而不是 0 变为 1。
特异性 = 1 - FPR 我改了代码如下:
plt.plot(1-fpr, tpr, 'b', label = 'AUC = %0.2f' % roc_auc)
但是这个数字好像不对。
这是我在纸上看到的。
你对ROC曲线的理解有误。 ROC 曲线绘制了不同阈值下的真阳性率(灵敏度)tpr = tp / (tp + fn)
与假阳性率(1 - 特异性)1 - (tn / (tn + fp)
。现在,我看到您的标题表明您想要 'ROC of sensitivity and specificity' 但实际上不存在类似的东西。解决灵敏度和特异性的方法是通过 ROC 曲线。
为了获得 ROC 曲线,将绘图更改为:
plt.plot(fpr, tpr, 'b', label = 'AUC = %0.2f' % roc_auc)
你可以从上面的解释中看到如何计算假阳性率和真阳性率。
然后,在解释 ROC 曲线时,您希望分类器尽可能靠近左上角,以指示低假阳性率(高特异性)和高真阳性率(高灵敏度)。也就是说,假阳性率并不代表特异性,而是特异性的负值。这就是为什么你希望它是最小的。
最后但并非最不重要的一点是,当涉及到 ROC 曲线时,人们经常会感到困惑的情况是 X 轴上没有 1 - specificity
,而是 specificity
。发生这种情况时,值的方向会反转(如图所示),因此它会从 1 变为 0 而不是 0 变为 1。