precision_recall_curve#

sklearn.metrics.precision_recall_curve(y_true, y_score=None, *, pos_label=None, sample_weight=None, drop_intermediate=False, probas_pred='deprecated')#

计算不同概率阈值下的精确率-召回率对。

注意:此实现仅限于二分类任务。

精确率是比率 tp / (tp + fp) ,其中 tp 是真阳性数量, fp 是假阳性数量。精确率直观地表示分类器不将负样本标记为正样本的能力。

召回率是比率 tp / (tp + fn) ,其中 tp 是真阳性数量, fn 是假阴性数量。召回率直观地表示分类器找到所有正样本的能力。

最后一个精确率和召回率值分别为 1. 和 0.,并且没有对应的阈值。这确保了图形从 y 轴开始。

第一个精确率和召回率值分别是精确率=类别平衡和召回率=1.0,这对应于一个总是预测正类别的分类器。

更多信息请参阅 用户指南

Parameters:
y_true形状为 (n_samples,) 的类数组

真实二进制标签。如果标签不是 {-1, 1} 或 {0, 1},则应明确给出 pos_label。

y_score形状为 (n_samples,) 的类数组

目标分数,可以是正类别的概率估计,或者是无阈值的决策度量(如某些分类器的 decision_function 返回的)。

pos_labelint, float, bool 或 str, 默认=None

正类别的标签。 当 pos_label=None 时,如果 y_true 是 {-1, 1} 或 {0, 1}, pos_label 设置为 1,否则会引发错误。

sample_weight形状为 (n_samples,) 的类数组, 默认=None

样本权重。

drop_intermediatebool, 默认=False

是否丢弃一些次优阈值,这些阈值在绘制的精确率-召回率曲线上不会出现。这有助于创建更轻量的精确率-召回率曲线。

Added in version 1.3.

probas_pred形状为 (n_samples,) 的类数组

目标分数,可以是正类别的概率估计,或者是无阈值的决策度量(如某些分类器的 decision_function 返回的)。

Deprecated since version 1.5: probas_pred 已弃用,将在 1.7 版本中移除。请使用 y_score 代替。

Returns:
precision形状为 (n_thresholds + 1,) 的 ndarray

精确率值,其中元素 i 是分数 >= 阈值[i] 的预测的精确率,最后一个元素为 1。

recall形状为 (n_thresholds + 1,) 的 ndarray

递减的召回率值,其中元素 i 是分数 >= 阈值[i] 的预测的召回率,最后一个元素为 0。

thresholds形状为 (n_thresholds,) 的 ndarray

用于计算精确率和召回率的决策函数上的递增阈值,其中 n_thresholds = len(np.unique(probas_pred))

See also

PrecisionRecallDisplay.from_estimator

给定二分类器绘制精确率-召回率曲线。

PrecisionRecallDisplay.from_predictions

使用二分类器的预测绘制精确率-召回率曲线。

average_precision_score

从预测分数计算平均精确率。

det_curve

计算不同概率阈值下的错误率。

roc_curve

计算接收者操作特征(ROC)曲线。

Examples

>>> import numpy as np
>>> from sklearn.metrics import precision_recall_curve
>>> y_true = np.array([0, 0, 1, 1])
>>> y_scores = np.array([0.1, 0.4, 0.35, 0.8])
>>> precision, recall, thresholds = precision_recall_curve(
...     y_true, y_scores)
>>> precision
array([0.5       , 0.66666667, 0.5       , 1.        , 1.        ])
>>> recall
array([1. , 1. , 0.5, 0.5, 0. ])
>>> thresholds
array([0.1 , 0.35, 0.4 , 0.8 ])