我有一个用 Keras 编写的多标签分类器,我想从中计算 AUC 并为从测试集中分类的每个元素绘制 ROC 曲线。
一切看起来都很好,除了一些元素有一条斜率如下的 roc 曲线:
我不知道在这种情况下如何解释斜率。
基本上我的工作流程如下,我有一个预先训练的模型
,Keras的实例,并且我有特征X
和二值化标签y
,y
中的每个元素都是一个长度为1000的数组,因为这是一个多标签分类问题,y
中的每个元素可能包含很多1,表明该元素属于多个类,因此我使用了 binary_crossentropy 的内置损失,模型预测的输出是分数概率。然后我绘制 roc 曲线,如下所示。
from sklearn.metrics import roc_curve, auc
#...
for xi, yi in (X_test, y_test):
y_pred = model.predict([xi])[0]
fpr, tpr, _ = roc_curve(yi, y_pred)
plt.plot(fpr, tpr, color='darkorange', lw=0.5)
预测方法返回概率,因为我使用的是 keras 的函数式 api。
有谁知道为什么roc曲线看起来像这样吗?
最佳答案
在 scikit-learn 的邮件列表中询问,他们回答:
Slope usually means there are ties in your predictions.
这个问题就是这种情况。
关于python - 多标签分类中的 roc_curve 有斜率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41517202/