average_precision_score#

sklearn.metrics.average_precision_score(y_true, y_score, *, average='macro', pos_label=1, sample_weight=None)[原始碼]#

從預測分數計算平均精確度 (AP)。

AP 將精確度-召回率曲線總結為在每個閾值下達到的精確度的加權平均值,其中使用從前一個閾值開始的召回率增加量作為權重。

\[\text{AP} = \sum_n (R_n - R_{n-1}) P_n\]

其中 \(P_n\)\(R_n\) 是在第 n 個閾值下的精確度和召回率 [1]。此實作不是內插的,並且與使用梯形規則計算精確度-召回率曲線下的面積不同,後者使用線性內插,可能過於樂觀。

使用者指南中閱讀更多內容。

參數:
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_truepos_label 固定為 1。

sample_weight形狀為 (n_samples,) 的類陣列,預設值=None

樣本權重。

傳回值:
average_precisionfloat

平均精確度分數。

另請參閱

ROC 曲線下面積分數 (roc_auc_score)

計算 ROC 曲線下的面積。

精確度-召回率曲線 (precision_recall_curve)

計算不同機率閾值的精確度-召回率對。

註解

在版本 0.19 中變更: 不再在操作點之間進行線性內插,而是使用自上一個操作點以來召回率的變化來加權精確度。

參考文獻

範例

>>> 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)
np.float64(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)
np.float64(0.77...)