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中文網其他相關文章!