0
我嘗試計算f1_score
,但是當我使用sklearn f1_score
方法時,我得到了一些警告。如何計算多分數分類的F1分數?
我有一個預測多標籤5類問題。
import numpy as np
from sklearn.metrics import f1_score
y_true = np.zeros((1,5))
y_true[0,0] = 1 # => label = [[1, 0, 0, 0, 0]]
y_pred = np.zeros((1,5))
y_pred[:] = 1 # => prediction = [[1, 1, 1, 1, 1]]
result_1 = f1_score(y_true=y_true, y_pred=y_pred, labels=None, average="weighted")
print(result_1) # prints 1.0
result_2 = f1_score(y_true=y_ture, y_pred=y_pred, labels=None, average="weighted")
print(result_2) # prints: (1.0, 1.0, 1.0, None) for precision/recall/fbeta_score/support
當我使用的average="samples"
代替"weighted"
我得到(0.1,1.0,0.1818 ......,無)。 "weighted"
選項對多標籤問題沒有用處,或者如何正確使用f1_score
方法?
使用average="weighted"
時,我也得到一個警告:
「UndefinedMetricWarning:召回和F-分數是不明確的和被設置爲0.0的標籤沒有真正樣本」
嗨我的數組與np.zeros((1,5))有形狀(1,5)我剛剛寫了一個評論給一個例子如何一個樣本看起來像但它是實際的形式像這樣[[1 ,0,0,0,0] ...]。問題是f1_score與平均值=「微」/「宏」一起工作,但它不與「加權」。所以我的問題是「權重」選項不適用於多標籤,還是必須在f1_score函數中設置其他選項,如標籤/ pos_label。 –
請閱讀答案。您無法使用形狀爲(1,5)的目標變量。在這種情況下,即使'微'或'宏'平均,你的'f1_score'也不起作用。 –
當我使用ravel來獲得形狀(5,)時,它將一個值作爲一個樣本使用,因此它不適用於多標籤,例如當我嘗試使用平均值=「樣本」的形狀時,出現錯誤「基於樣本的精度,回憶,fscore在多標籤分類之外無效」。我得到了微觀和宏觀形狀(1,5)的工作結果(它們是正確的)唯一的問題是選項average =「weighted」 –