sklearn.metrics 中的f1-score簡介
1 f1_score,average='binary', 'macro', 'micro', 'weighted'
F1得分可以解釋為精確度和召回率的調(diào)和平均值,其中F1得分達(dá)到其最佳值為1,最差得分為0。精確度和召回率對F1得分的相對貢獻(xiàn)相等。F1得分的公式為:
在多類別和多標(biāo)簽的情況下,這是每個類別的F1得分的平均值,其權(quán)重取決于平均參數(shù)。
sklearn.metrics.f1_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')
參數(shù)介紹:
y_true:1d array,或label array/sparse matrix,Ground truth (correct) target values
y_pred: 分類器返回的估計(jì)目標(biāo)。
pos_label:str or int, default=1,要報(bào)告 average = ‘ binary’且數(shù)據(jù)為二分類。如果數(shù)據(jù)是多類或多標(biāo)簽的,這將被忽略; 設(shè)置labels = [ pos _ label ]和average!= “binary”將只報(bào)告該標(biāo)簽的分?jǐn)?shù)。
average: 該參數(shù)是多類/多標(biāo)簽?zāi)繕?biāo)所必需的。如果沒有,則返回每個類的分?jǐn)?shù)。否則,這將確定對數(shù)據(jù)執(zhí)行的平均類型:
'binary'
: 僅報(bào)告pos_label指定的類的結(jié)果。這僅適用于目標(biāo) (y_{true,pred}) 是二分類的。
'micro': 通過計(jì)算總真陽性、假陰性和假陽性來全局計(jì)算指標(biāo)。
權(quán)重傾向:每一個樣本的權(quán)重都相同;
適用環(huán)境:多分類不平衡,若數(shù)據(jù)極度不平衡會影響結(jié)果;
'macro': 計(jì)算每個標(biāo)簽的指標(biāo),并找到它們的未加權(quán)平均值。
取值范圍:每一類別的權(quán)重都相同;
適用環(huán)境:多分類問題,不受數(shù)據(jù)不平衡影響,容易受到識別性高(高recall、高precision)的類別影響;
'weighted'
: 計(jì)算每個標(biāo)簽的指標(biāo),并找到它們的平均加權(quán)支持 (每個標(biāo)簽的真實(shí)實(shí)例數(shù))。這會改變 “macro” 以解決標(biāo)簽不平衡; 它可能導(dǎo)致F分?jǐn)?shù)不在精度和召回率之間。
'samples'
: 計(jì)算每個實(shí)例的指標(biāo),并找到它們的平均值 (僅對于與accuracy_score不同的多標(biāo)簽分類有意義)。
代碼展示:
二分類情況:
>>> from sklearn.metrics import precision_score, recall_score, f1_score >>> y_true = [0, 1, 0, 0, 1, 0, 1] >>> y_pred = [0, 1, 0, 0, 0, 1, 0] # 計(jì)算二分類情況下的average = 'macro' 'micro' 'binary' # 二分類情況下,也能用macro和micro,但一般用binary >>> f1_score(y_true, y_pred,average='macro') 0.5333333333333332 >>> precision_score(y_true, y_pred, average='macro') 0.55 >>> recall_score(y_true, y_pred, average='macro') 0.5416666666666666 >>> precision_score(y_true, y_pred, average='micro') 0.5714285714285714 >>> recall_score(y_true, y_pred, average='micro') 0.5714285714285714 >>> f1_score(y_true, y_pred,average='micro') 0.5714285714285714 >>> f1_score(y_true, y_pred,average='binary') 0.4 >>> recall_score(y_true, y_pred, average='binary') 0.3333333333333333 >>> precision_score(y_true, y_pred, average='binary') 0.5 >>> f1_score(y_true, y_pred) # 二分類情況下,默認(rèn)使用binary 0.4
多分類情況:
>>> from sklearn.metrics import precision_score, recall_score, 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.26666666666666666 >>> f1_score(y_true, y_pred, average='micro') 0.3333333333333333 >>> f1_score(y_true, y_pred, average=None) # 相當(dāng)于binary,為每個類別計(jì)算binary的f1分?jǐn)?shù),但是不能輸入binary,要輸入None array([0.8, 0. , 0. ]) >>> 0.8/3 0.26666666666666666
到此這篇關(guān)于sklearn.metrics 中的f1-score簡介的文章就介紹到這了,更多相關(guān)sklearn.metrics 中f1-score內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python編寫WAF與Sqlmap結(jié)合實(shí)現(xiàn)指紋探測
這篇文章主要為大家介紹了python編寫WAF指紋探測并與Sqlmap結(jié)合的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python讀取大量Excel文件并跨文件批量計(jì)算平均值的方法
這篇文章主要介紹了Python讀取大量Excel文件并跨文件批量計(jì)算平均值,介紹基于Python語言,實(shí)現(xiàn)對多個不同Excel文件進(jìn)行數(shù)據(jù)讀取與平均值計(jì)算的方法,需要的朋友可以參考下2023-02-02使用Python字符串訪問與修改局部變量的實(shí)現(xiàn)代碼
這篇文章主要介紹了使用Python字符串訪問與修改局部變量,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06在Django框架中運(yùn)行Python應(yīng)用全攻略
這篇文章主要介紹了在Django框架中運(yùn)行Python應(yīng)用全攻略,在這之前必須搭建好簡單的視圖和模版,接下來便是本文中所述的核心內(nèi)容應(yīng)用配置,需要的朋友可以參考下2015-07-07