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_true
,pos_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...)