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...