平均精确率得分#
- sklearn.metrics.average_precision_score(y_true, y_score, *, average='macro', pos_label=1, sample_weight=None)[source]#
- 根据预测分数计算平均精确率 (AP)。 - AP 将精确率-召回率曲线总结为在每个阈值上达到的精确率的加权平均值,其中前一个阈值的召回率增加用作权重。 \[\text{AP} = \sum_n (R_n - R_{n-1}) P_n\]- 其中\(P_n\)和\(R_n\)分别代表第n个阈值下的精确率和召回率[1]。此实现未进行插值,与使用梯形法则计算精确率-召回率曲线下面积不同,梯形法则使用线性插值,可能过于乐观。 - 更多信息请参见用户指南。 - 参数:
- y_truearray-like,形状为 (n_samples,) 或 (n_samples, n_classes)
- 真实的二元标签或二元标签指示器。 
- y_scorearray-like,形状为 (n_samples,) 或 (n_samples, n_classes)
- 目标分数,可以是正类的概率估计、置信度值或非阈值化决策度量(某些分类器上的decision_function返回)。 
- average{'micro', 'samples', 'weighted', 'macro'} 或 None,默认为 'macro'
- 如果为 - None,则返回每个类的分数。否则,这将确定对数据执行的平均类型。- 'micro':
- 通过将标签指示矩阵的每个元素视为一个标签来全局计算指标。 
- 'macro':
- 计算每个标签的指标,并找到它们的未加权平均值。这不会考虑标签不平衡。 
- 'weighted':
- 计算每个标签的指标,并找到它们的平均值,并根据支持度(每个标签的真实实例数)进行加权。 
- 'samples':
- 计算每个实例的指标,并找到它们的平均值。 
 - 当 - y_true为二元时将被忽略。
- pos_labelint、float、bool 或 str,默认为 1
- 正类的标签。仅应用于二元 - y_true。对于多标签指示器- y_true,- pos_label固定为 1。
- sample_weightarray-like,形状为 (n_samples,),默认为 None
- 样本权重。 
 
- 返回:
- average_precisionfloat
- 平均精确率分数。 
 
 - 参见 - ROC曲线下面积得分
- 计算ROC曲线下面积。 
- precision_recall_curve
- 为不同的概率阈值计算精确率-召回率对。 
 - 备注 - 0.19版本中的更改:不再进行线性插值,而是根据自上次工作点以来召回率的变化对精确率进行加权。 - 参考文献 - 示例 - >>> import numpy as np >>> from sklearn.metrics import average_precision_score >>> y_true = np.array([0, 0, 1, 1]) >>> y_scores = np.array([0.1, 0.4, 0.35, 0.8]) >>> average_precision_score(y_true, y_scores) np.float64(0.83...) >>> y_true = np.array([0, 0, 1, 1, 2, 2]) >>> y_scores = np.array([ ... [0.7, 0.2, 0.1], ... [0.4, 0.3, 0.3], ... [0.1, 0.8, 0.1], ... [0.2, 0.3, 0.5], ... [0.4, 0.4, 0.2], ... [0.1, 0.2, 0.7], ... ]) >>> average_precision_score(y_true, y_scores) np.float64(0.77...) 
 
    