首頁 >後端開發 >Python教學 >為什麼計算F1分數時`UndefinedMetricWarning`只出現一次?

為什麼計算F1分數時`UndefinedMetricWarning`只出現一次?

Linda Hamilton
Linda Hamilton原創
2024-11-15 19:41:02409瀏覽

Why Does `UndefinedMetricWarning` Appear Only Once When Calculating F1 Score?

UndefinedMetricWarning: F-score 對於沒有預測樣本的標籤未定義

在scikit-learn 中,f1_score 指標衡量分類模型的準確性。但是,計算需要目標變數 (y_test) 中每個標籤存在預測樣本。如果預測樣本(y_pred) 中缺少某些標籤,這些標籤的F1 分數將變得不確定,從而導致錯誤訊息:

UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.

為什麼錯誤只發生一次

雖然錯誤訊息表明未定義的指標,但它實際上是預設僅出現一次的警告。這是因為 Python 對待警告和錯誤的方式不同。預設情況下,大多數環境僅顯示一次特定警告,即使潛在情況仍然存在。

解決 UndefinedMetricWarning

要解決警告,至關重要的是確保y_test 中的所有標籤也存在於 y_pred 中。這可以透過比較標籤集來確定:

set(y_test) - set(y_pred)

如果結果是空集,則所有標籤都已被預測,並且不會有未定義的 F1 分數。

避免重複警告

如果每次發生警告都很重要,可以使用 warnings.filterwarnings() 函數來修改警告處理行為:

import warnings
warnings.filterwarnings('always')

忽略沒有預測樣本的標籤

或者,可以透過指定感興趣的標籤從F1 分數計算中排除特定標籤:

metrics.f1_score(y_test, y_pred, average='weighted', labels=np.unique(y_pred))

This確保在分數計算中不考慮預測樣本中缺少的標籤,從而消除警告。

以上是為什麼計算F1分數時`UndefinedMetricWarning`只出現一次?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn