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 ])