【问题标题】:Plot ROC curve using sklearn使用 sklearn 绘制 ROC 曲线
【发布时间】:2020-08-15 15:14:30
【问题描述】:

我尝试用 sklearn 创建 ROC 曲线,下面是我的代码

from sklearn.metrics import roc_curve
fpr_keras, tpr_keras, thresholds_keras = roc_curve(validation_generator.classes, y_pred_label_indices)

当我打印时

打印(fpr_keras):

[0.    0.48  0.568 0.584 0.632 0.648 0.664 0.68  0.992 0.992 1.    1.   ]

打印(tpr_keras)

[0.    0.    0.    0.    0.    0.    0.    0.    0.    0.016 0.016 1.   ]

打印(阈值_keras)

[2.0000000e+00 1.0000000e+00 9.9999988e-01 9.9999976e-01 9.9999893e-01
 9.9999881e-01 9.9999833e-01 9.9999821e-01 9.6940529e-01 6.8794215e-01
 5.7934558e-01 1.9927023e-05]

但是当我使用此代码绘制它时:

plt.plot(fpr_keras, tpr_keras, thresholds_keras)
plt.plot([0,1], [0,1], 'r--')
plt.xlim([0, 1])
plt.ylim([0, 1])

我明白了:

为什么会这样?,我的代码有问题吗?

【问题讨论】:

  • 也为第一个代码添加结果
  • 我添加了每个变量的打印值

标签: python scikit-learn roc


【解决方案1】:

ROC 曲线仅是 fpr 和 tpr 的图。 要绘制 ROC 曲线,您应该这样做 plt.plot(fpr,tpr)

但是,根据您提供的数据,ROC 曲线的结果非常糟糕。

现在,您上面显示的图是

的结果

plt.plot([0,1], [0,1], 'r--') plt.xlim([0, 1]) plt.ylim([0, 1]) 只是不是 ROC 曲线

尝试分别运行这两个代码。你会明白的。

【讨论】:

  • 知道为什么数据会导致坏 roc 曲线吗?
  • 取决于真阳性率和假阳性率。如果这两者都不够好,那么你的 ROC 将是一条糟糕的曲线。作为黄金法则“垃圾进,垃圾出”。
猜你喜欢
  • 1970-01-01
  • 2019-02-05
  • 2018-12-26
  • 2016-04-06
  • 2016-02-04
  • 2021-06-24
  • 2019-02-27
  • 1970-01-01
  • 2021-03-03
相关资源
最近更新 更多