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

範例

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