average_precision_score#
- sklearn.metrics.average_precision_score(y_true, y_score, *, average='macro', pos_label=1, sample_weight=None)#
计算预测分数的平均精度(AP)。
AP总结了精度-召回率曲线,作为在每个阈值上实现的精度的加权平均值,使用从前一个阈值增加的召回率作为权重:
\[ext{AP} = \sum_n (R_n - R_{n-1}) P_n\]其中 \(P_n\) 和 \(R_n\) 是第 n 个阈值处的精度和召回率 [1]。此实现未插值,与使用梯形法则计算精度-召回率曲线下的面积不同,后者使用线性插值,可能过于乐观。
更多信息请参阅 用户指南 。
- Parameters:
- y_true形状为 (n_samples,) 或 (n_samples, n_classes) 的类数组
真实二进制标签或二进制标签指示器。
- y_score形状为 (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_weight形状为 (n_samples,) 的类数组, 默认=None
样本权重。
- Returns:
- average_precisionfloat
平均精度分数。
See also
roc_auc_score
计算 ROC 曲线下面积。
precision_recall_curve
计算不同概率阈值的精度-召回率对。
Notes
Changed in version 0.19: 不再在线性插值操作点之间,而是根据从前一个操作点增加的召回率对精度进行加权。
References
Examples
>>> 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) 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) 0.77...
Gallery examples#
精确率-召回率