我不明白在以下情况下,Sklearn函数返回roc_auc_score的原因:

y_true = [0, 0, 1, 0, 0, 0, 0, 1]

y_scores = [0.18101096153259277, 0.15506085753440857,
            0.9940806031227112, 0.05024950951337814,
            0.7381414771080017, 0.8922111988067627,
            0.8253260850906372, 0.9967281818389893]

roc_auc_score(y_true,y_scores)

最后的三个分数与标签不符。那么,AUC怎么可能是1?我在这里出什么问题了?

最佳答案

ROC曲线的auc只是测量模型相对于正类对数据点进行排序的能力。
在您的示例中,正类的得分总是大于负类的数据点。因此,1的auc_roc_得分是正确的。

pd.DataFrame({'y_true':y_true,'y_scores':y_scores}).sort_values('y_scores',ascending=False)

    y_scores    y_true
7   0.996728    1
2   0.994081    1
5   0.892211    0
6   0.825326    0
4   0.738141    0
0   0.181011    0
1   0.155061    0
3   0.050250    0

关于python - 使用Sklearn在ROC曲线下的面积?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55078739/

10-11 08:45