我有一个用Keras编写的多标签分类器,我希望计算每个测试集元素的AUC并绘制ROC曲线。
一切看起来都很好,除了某些元素的ROC曲线具有如下斜率:
我不知道在这种情况下如何解释斜率。
我的工作流程大致如下:我有一个预训练的model
,是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的邮件列表中询问,他们回答说:
斜率通常意味着你的预测中有平局。
这正是这个问题的情况。