首页 > 解决方案 > ROC 曲线 sklearn 概率与分数

问题描述

我不明白如何解释sklearn.metrics.roc_curve(x, y)当我的 y 是预测标签而不是概率分数时的输出。

这是简化的代码示例:

true = [1, 1, 0, 1, 0, 1, 0]
predict = [0, 1, 1, 1, 0, 1, 0]

fpr, tpr, threshold = roc_curve(truth, predict)

>>> fpr
Output: array([0.        , 0.33333333, 1.        ])

>>> tpr
Output: array([0.  , 0.75, 1.  ])

>>> threshold
Output: array([2, 1, 0])

我不明白如何解释tpr,fpr和的这个输出threshold。我的意思是我理解输出是什么,但我不明白如何解释每个假阳性率、真阳性率和阈值的三个值。

另外,当我使用概率分数时:

truth = [1, 1, 0, 1, 0, 1, 0]
scores = [0.2, 0.78, 0.95, 0.65, 0.33, 0.73, 0.34]

fpr_score, tpr_score, threshold_score = roc_curve(truth, scores)

>>> fpr_score
Ouput: array([0.        , 0.33333333, 0.33333333, 1.        , 1.        ])

>>> tpr_score
Output: array([0.  , 0.  , 0.75, 0.75, 1.  ])

>>> threshold
Output: array([1.95, 0.95, 0.65, 0.33, 0.2 ])

在这里,我在输出中得到不同的值,这一次它具有更好的分辨率。谁能解释如何在这两种情况下解释值?

我的主要目标是调整阈值以获得高 AUC 分数,因此我需要根据阈值选择将类预测设置为正或负,但这意味着我将使用类标签y,因此我将只有三个值每个 FPR、TPR 和阈值。

标签: pythonscikit-learnroc

解决方案


推荐阅读