當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python sklearn f1_score用法及代碼示例


本文簡要介紹python語言中 sklearn.metrics.f1_score 的用法。

用法:

sklearn.metrics.f1_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')

計算 F1 分數,也稱為平衡 F-score 或 F-measure。

F1 分數可以解釋為準確率和召回率的調和平均值,其中 F1 分數在 1 時達到其最佳值,在 0 時達到最差分數。準確率和召回率對 F1 分數的相對貢獻是相等的。 F1分數的公式是:

F1 = 2 * (precision * recall) / (precision + recall)

在多類和多標簽情況下,這是每個類的 F1 分數的平均值,其權重取決於 average 參數。

在用戶指南中閱讀更多信息。

參數

y_true一維數組,或標簽指示符數組/稀疏矩陣

基本事實(正確)目標值。

y_pred一維數組,或標簽指示符數組/稀疏矩陣

分類器返回的估計目標。

labels類似數組,默認=無

average != 'binary' 時要包含的標簽集,如果 average is None 則它們的順序。可以排除數據中存在的標簽,例如計算忽略多數負類的多類平均值,而數據中不存在的標簽將導致宏觀平均值中的 0 個分量。對於多標簽目標,標簽是列索引。默認情況下,y_truey_pred 中的所有標簽都按排序順序使用。

pos_labelstr 或 int,默認 = 1

如果average='binary' 並且數據是二進製的,則要報告的類。如果數據是多類或多標簽的,這將被忽略;設置 labels=[pos_label]average != 'binary' 將僅報告該標簽的分數。

average{‘micro’, ‘macro’, ‘samples’,'加權', ‘binary’} 或無,默認='二進製'

多類/多標簽目標需要此參數。如果 None ,則返回每個類的分數。否則,這將確定對數據執行的平均類型:

'binary'

僅報告 pos_label 指定的類的結果。這僅適用於目標 (y_{true,pred}) 是二進製的。

'micro'

通過計算總的真陽性、假陰性和假陽性來全局計算指標。

'macro'

計算每個標簽的指標,並找到它們的未加權平均值。這沒有考慮標簽不平衡。

'weighted'

計算每個標簽的指標,並通過支持度(每個標簽的真實實例數)找到它們的平均加權值。這會改變 ‘macro’ 以解決標簽不平衡問題;它可能導致 F-score 不在精確率和召回率之間。

'samples'

計算每個實例的指標,並找到它們的平均值(僅對不同於 accuracy_score 的多標簽分類有意義)。

sample_weight形狀類似數組 (n_samples,),默認=None

樣本權重。

zero_division“warn”,0或1,默認=”warn”

設置當有零除法時返回的值,即當所有預測和標簽都是負數時。如果設置為“warn”,這將作為 0,但也會引發警告。

返回

f1_score浮點數或浮點數數組,形狀 = [n_unique_labels]

二分類中正類的 F1 分數或多類任務中每個類的 F1 分數的加權平均值。

注意

true positive + false positive == 0 時,精度未定義。當 true positive + false negative == 0 時,召回未定義。在這種情況下,默認情況下,度量將設置為 0,f-score 和 UndefinedMetricWarning 將被提高。可以使用 zero_division 修改此行為。

參考

1

Wikipedia entry for the F1-score

例子

>>> from sklearn.metrics import f1_score
>>> y_true = [0, 1, 2, 0, 1, 2]
>>> y_pred = [0, 2, 1, 0, 0, 1]
>>> f1_score(y_true, y_pred, average='macro')
0.26...
>>> f1_score(y_true, y_pred, average='micro')
0.33...
>>> f1_score(y_true, y_pred, average='weighted')
0.26...
>>> f1_score(y_true, y_pred, average=None)
array([0.8, 0. , 0. ])
>>> y_true = [0, 0, 0, 0, 0, 0]
>>> y_pred = [0, 0, 0, 0, 0, 0]
>>> f1_score(y_true, y_pred, zero_division=1)
1.0...
>>> # multilabel classification
>>> y_true = [[0, 0, 0], [1, 1, 1], [0, 1, 1]]
>>> y_pred = [[0, 0, 0], [1, 1, 1], [1, 1, 0]]
>>> f1_score(y_true, y_pred, average=None)
array([0.66666667, 1.        , 0.66666667])

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.metrics.f1_score。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。