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應用示例?