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曲线下的面积
计算不同概率阈值的精确召回对
注
在版本0.19中进行了更改:不是在工作点之间进行线性插值,而是通过自上一个工作点以来的召回率变化来加权精度。
参考
1 Wikipedia entry for the Average precision
示例
>>> 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...