精确率-召回率曲线 #
- sklearn.metrics.precision_recall_curve(y_true, y_score=None, *, pos_label=None, sample_weight=None, drop_intermediate=False, probas_pred='deprecated')[source]#
- 计算不同概率阈值下的精确率-召回率对。 - 注意:此实现仅限于二元分类任务。 - 精确率是比率 - tp / (tp + fp),其中- tp是真阳性数,- fp是假阳性数。直观地说,精确率是分类器不将负样本标记为正样本的能力。- 召回率是比率 - tp / (tp + fn),其中- tp是真阳性数,- fn是假阴性数。直观地说,召回率是分类器找到所有正样本的能力。- 最后一个精确率和召回率值分别为 1. 和 0.,并且没有对应的阈值。这确保了图表从 y 轴开始。 - 第一个精确率和召回率值是精确率=类别平衡且召回率=1.0,这对应于始终预测正类别的分类器。 - 在 用户指南 中了解更多信息。 - 参数:
- y_trueshape 为 (n_samples,) 的类数组
- 真实的二元标签。如果标签不是 {-1, 1} 或 {0, 1},则应明确给出 pos_label。 
- y_scoreshape 为 (n_samples,) 的类数组
- 目标分数,可以是正类的概率估计,也可以是非阈值化决策度量(由某些分类器上的 - decision_function返回)。
- pos_labelint、float、bool 或 str,默认为 None
- 正类的标签。当 - pos_label=None时,如果 y_true 在 {-1, 1} 或 {0, 1} 中,则- pos_label设置为 1,否则将引发错误。
- sample_weightshape 为 (n_samples,) 的类数组,默认为 None
- 样本权重。 
- drop_intermediatebool,默认为 False
- 是否丢弃一些在绘制的精确率-召回率曲线中不会出现的次优阈值。这对于创建更轻量的精确率-召回率曲线很有用。 - 1.3 版本中添加。 
- probas_predshape 为 (n_samples,) 的类数组
- 目标分数,可以是正类的概率估计,也可以是非阈值化决策度量(由某些分类器上的 - decision_function返回)。- 自 1.5 版本起已弃用: - probas_pred已弃用,将在 1.7 版本中移除。请改用- y_score。
 
- 返回:
- precisionshape 为 (n_thresholds + 1,) 的 ndarray
- 精确率值,其中元素 i 是分数 >= thresholds[i] 的预测的精确率,最后一个元素为 1。 
- recallshape 为 (n_thresholds + 1,) 的 ndarray
- 递减的召回率值,其中元素 i 是分数 >= thresholds[i] 的预测的召回率,最后一个元素为 0。 
- thresholdsshape 为 (n_thresholds,) 的 ndarray
- 用于计算精确率和召回率的决策函数上的递增阈值,其中 - n_thresholds = len(np.unique(probas_pred))。
 
 - 另请参见 - PrecisionRecallDisplay.from_estimator
- 给定二元分类器,绘制精确率-召回率曲线。 
- PrecisionRecallDisplay.from_predictions
- 使用二元分类器的预测结果绘制精确率-召回率曲线。 
- average_precision_score
- 计算预测分数的平均精确率。 
- det_curve
- 计算不同概率阈值的错误率。 
- ROC曲线 (roc_curve)
- 计算受试者工作特征 (ROC) 曲线。 
 - 示例 - >>> 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 ]) 
 
     
