sklearn.metrics.average_precision_score

sklearn.metrics.average_precision_score(y_true, y_score, *, average='macro', pos_label=1, sample_weight=None)

根据预测分数计算平均精度(AP)

AP总结了一个精确召回曲线,作为在每个阈值处获得的精度的加权平均值,并且与以前的阈值相比,召回率的增加用作权重:

其中分别是第n个阈值[1]时的精度和召回率。此实现未进行插值,并且与使用梯形规则计算精确调用曲线下的面积有所不同,后者使用线性插值并且可能过于乐观。

注意:此实现仅限于二进制分类任务或多标签分类任务。

用户指南中阅读更多内容。

参数 说明
y_true array, shape = [n_samples] or [n_samples, n_classes]
真正的二进制标签或二进制标签指示符。
y_score array, shape = [n_samples] or [n_samples, n_classes]
目标分数可以是肯定类别的概率估计值,置信度值或决策的非阈值度量(如某些分类器上的“ decision_function”所返回)。
average string, [None, ‘micro’, ‘macro’ (default), ‘samples’, ‘weighted’]
如果为None,则返回每类的得分。否则,将确定对数据平均表现的类型:

- 'micro':
通过将标签指标矩阵的每个元素都视为标签来全局计算指标。
- 'macro':
计算每个标签的指标,并找到其未加权平均值。此处没有考虑标签不平衡问题。
- 'weighted':
计算每个标签的指标,并找到它们的平均值,然后按支持度(每个标签的真实实例数)加权。
- 'samples':
计算每个实例的指标,并找到它们的平均值。
当y_true为二进制时将被忽略。
pos_label int or str (default=1)
正向类别的标签。仅适用于二进制y_true。 对于multilabel-indicator y_true,pos_label固定为1。
sample_weight array-like of shape (n_samples,), default=None
样本权重。
返回值 说明
average_precision float

另见

roc_auc_score

计算ROC曲线下的面积

precision_recall_curve

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

在版本0.19中进行了更改:不是在工作点之间进行线性插值,而是通过自上一个工作点以来的召回率变化来加权精度。

参考

1 Wikipedia entry for the Average precision

示例

>>> import numpy as np
>>> from sklearn.metrics import average_precision_score
>>> y_true = np.array([0011])
>>> y_scores = np.array([0.10.40.350.8])
>>> average_precision_score(y_true, y_scores)
0.83...

sklearn.metrics.average_precision_score应用示例