fbeta_score#
- sklearn.metrics.fbeta_score(y_true, y_pred, *, beta, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')[原始碼]#
計算 F-beta 分數。
F-beta 分數是精確度和召回率的加權調和平均數,其最佳值為 1,最差值為 0。
beta
參數代表召回率重要性與精確度重要性的比率。beta > 1
賦予召回率較大的權重,而beta < 1
則偏好精確度。例如,beta = 2
會使召回率的重要性是精確度的兩倍,而beta = 0.5
則會反其道而行。漸近地,beta -> +inf
只考慮召回率,而beta -> 0
只考慮精確度。F-beta 分數的公式為
\[F_\beta = \frac{(1 + \beta^2) \text{tp}} {(1 + \beta^2) \text{tp} + \text{fp} + \beta^2 \text{fn}}\]其中 \(\text{tp}\) 是真正 (true positive) 的數量,\(\text{fp}\) 是假正 (false positive) 的數量,而 \(\text{fn}\) 是假負 (false negative) 的數量。
除了
binary
目標之外,還支援將多類別和多標籤資料視為每個標籤的二元問題的集合。對於二元情況,設定average='binary'
會回傳pos_label
的 F-beta 分數。如果average
不是'binary'
,則會忽略pos_label
,並計算兩個類別的 F-beta 分數,然後取平均值或同時回傳 (當average=None
時)。同樣地,對於多類別和多標籤目標,將會根據average
參數回傳所有labels
的 F-beta 分數或取平均值。使用labels
指定要計算 F-beta 分數的標籤集。請參閱使用者指南以瞭解更多資訊。
- 參數:
- y_true一維類陣列,或標籤指示器陣列/稀疏矩陣
真實 (正確) 目標值。
- y_pred一維類陣列,或標籤指示器陣列/稀疏矩陣
分類器回傳的預估目標。
- beta浮點數
決定組合分數中召回率的權重。
- labels類陣列,預設為 None
當
average != 'binary'
時要包含的標籤集,以及當average is None
時的順序。資料中存在的標籤可以排除,例如在多類別分類中排除「負類」。可以包含資料中不存在的標籤,這些標籤將「被指定」為 0 個樣本。對於多標籤目標,標籤是欄索引。依預設,y_true
和y_pred
中的所有標籤都以排序順序使用。在 0.17 版本中變更:針對多類別問題改進了
labels
參數。- pos_label整數、浮點數、布林值或字串,預設值為 1
如果
average='binary'
且資料為二元,則要報告的類別,否則會忽略此參數。對於多類別或多標籤目標,設定labels=[pos_label]
且average != 'binary'
以僅報告一個標籤的指標。- average{‘micro’, ‘macro’, ‘samples’, ‘weighted’, ‘binary’} 或 None,預設為 ‘binary’
此參數是多類別/多標籤目標所必需的。如果為
None
,則會回傳每個類別的指標。否則,這會決定對資料執行的平均類型'binary'
:僅報告
pos_label
指定的類別的結果。這僅適用於目標 (y_{true,pred}
) 為二元的情況。'micro'
:透過計算總真正、假負和假正來全域計算指標。
'macro'
:計算每個標籤的指標,並找出它們的未加權平均值。這不會將標籤不平衡納入考量。
'weighted'
:計算每個標籤的指標,並找出它們的平均值,並依支援度 (每個標籤的真實執行個體數) 加權。這會更改 'macro' 以考量標籤不平衡;它可能會導致 F 分數不在精確度和召回率之間。
'samples'
:計算每個執行個體的指標,並找出它們的平均值 (僅適用於多標籤分類,其中這與
accuracy_score
不同)。
- sample_weight形狀為 (n_samples,) 的類陣列,預設為 None
樣本權重。
- zero_division{“warn”, 0.0, 1.0, np.nan}, 預設為 “warn”
設定在出現零除法時要回傳的值,即當所有預測和標籤都為負時。
附註
如果設定為 “warn”,則其行為類似於 0,但也會引發警告。
如果設定為
np.nan
,則此類值將會從平均值中排除。
於版本 1.3 新增:新增了
np.nan
選項。
- 回傳值:
- fbeta_score浮點數 (如果 average 不是 None) 或浮點數陣列,形狀 = [n_unique_labels]
二元分類中正類別的 F-beta 分數,或多類別任務中每個類別的 F-beta 分數的加權平均值。
另請參閱
precision_recall_fscore_support (精確度、召回率、F分數支援)
計算精確度、召回率、F 分數和支持度。
multilabel_confusion_matrix (多標籤混淆矩陣)
計算每個類別或樣本的混淆矩陣。
附註
當
true positive + false positive + false negative == 0
時,f-score 會回傳 0.0 並引發UndefinedMetricWarning
。 此行為可透過設定zero_division
來修改。參考文獻
[1]R. Baeza-Yates and B. Ribeiro-Neto (2011). Modern Information Retrieval. Addison Wesley, pp. 327-328.
[2]範例
>>> import numpy as np >>> from sklearn.metrics import fbeta_score >>> y_true = [0, 1, 2, 0, 1, 2] >>> y_pred = [0, 2, 1, 0, 0, 1] >>> fbeta_score(y_true, y_pred, average='macro', beta=0.5) 0.23... >>> fbeta_score(y_true, y_pred, average='micro', beta=0.5) 0.33... >>> fbeta_score(y_true, y_pred, average='weighted', beta=0.5) 0.23... >>> fbeta_score(y_true, y_pred, average=None, beta=0.5) array([0.71..., 0. , 0. ]) >>> y_pred_empty = [0, 0, 0, 0, 0, 0] >>> fbeta_score(y_true, y_pred_empty, ... average="macro", zero_division=np.nan, beta=0.5) 0.12...