亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用keras實現(xiàn)Precise, Recall, F1-socre方式

 更新時間:2020年06月15日 09:28:30   作者:joleoy  
這篇文章主要介紹了使用keras實現(xiàn)Precise, Recall, F1-socre方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

實現(xiàn)過程

from keras import backend as K
def Precision(y_true, y_pred):
 """精確率"""
 tp= K.sum(K.round(K.clip(y_true * y_pred, 0, 1))) # true positives
 pp= K.sum(K.round(K.clip(y_pred, 0, 1))) # predicted positives
 precision = tp/ (pp+ K.epsilon())
 return precision
 
def Recall(y_true, y_pred):
 """召回率"""
 tp = K.sum(K.round(K.clip(y_true * y_pred, 0, 1))) # true positives
 pp = K.sum(K.round(K.clip(y_true, 0, 1))) # possible positives
 recall = tp / (pp + K.epsilon())
 return recall
 
def F1(y_true, y_pred):
 """F1-score"""
 precision = Precision(y_true, y_pred)
 recall = Recall(y_true, y_pred)
 f1 = 2 * ((precision * recall) / (precision + recall + K.epsilon()))
 return f1 

補充知識:分類問題的幾個評價指標(Precision、Recall、F1-Score、Micro-F1、Macro-F1)

四個基本概念

TP、True Positive 真陽性:預測為正,實際也為正

FP、False Positive 假陽性:預測為正,實際為負

FN、False Negative 假陰性:預測與負、實際為正

TN、True Negative 真陰性:預測為負、實際也為負。

【一致判真假,預測判陰陽?!?/p>

以分類問題為例:(word公式為什么粘不過來??頭疼。)

首先看真陽性:真陽性的定義是“預測為正,實際也是正”,這個最好理解,就是指預測正確,是哪個類就被分到哪個類。對類A而言,TP的個位數(shù)為2,對類B而言,TP的個數(shù)為2,對類C而言,TP的個數(shù)為1。

然后看假陽性,假陽性的定義是“預測為正,實際為負”,就是預測為某個類,但是實際不是。對類A而言,F(xiàn)P個數(shù)為0,我們預測之后,把1和2分給了A,這兩個都是正確的,并不存在把不是A類的值分給A的情況。類B的FP是2,"3"和"8"都不是B類,但卻分給了B,所以為假陽性。類C的假陽性個數(shù)為2。

最后看一下假陰性,假陰性的定義是“預測為負,實際為正”,對類A而言,F(xiàn)N為2,"3"和"4"分別預測為B和C,但是實際是A,也就是預測為負,實際為正。對類B而言,F(xiàn)N為1,對類C而言,F(xiàn)N為1。

具體情況看如下表格:

A

B

C

總計

TP

2

2

1

5

FP

0

2

2

4

FN

2

1

1

4

感謝這兩位的指正

精確率和召回率

計算我們預測出來的某類樣本中,有多少是被正確預測的。針對預測樣本而言。

針對原先實際樣本而言,有多少樣本被正確的預測出來了。

套用網(wǎng)上的一個例子:

某池塘有1400條鯉魚,300只蝦,300只鱉。現(xiàn)在以捕鯉魚為目的。撒一大網(wǎng),逮著了700條鯉魚,200只蝦,100只鱉。那么,這些指標分別如下:

精確率 = 700 / (700 +200 + 100) = 70%

召回率 = 700 / 1400 =50%

可以吧上述的例子看成分類預測問題,對于“鯉魚來說”,TP真陽性為700,F(xiàn)P假陽性為300,F(xiàn)N假陰性為700。

Precison=TP/(TP+FP)=700(700+300)=70%

Recall=TP/(TP+FN)=700/(700+700)=50%

將上述例子,改變一下:把池子里的所有的鯉魚、蝦和鱉都一網(wǎng)打盡,觀察這些指標的變化。

精確率 = 1400 / (1400 +300 + 300) = 70%

召回率 = 1400 / 1400 =100%

TP為1400:有1400條鯉魚被預測出來;FP為600:有600個生物不是鯉魚類,卻被歸類到鯉魚;FN為0,鯉魚都被歸類到鯉魚類去了,并沒有歸到其他類。

Precision=TP/(TP+FP)=1400/(1400+600)=70%

Recall=TP/(TP+FN)=1400/(1400)=100%

其實就是分母不同,一個分母是預測為正的樣本數(shù),另一個是原來樣本中所有的正樣本數(shù)。

作為預測者,我們當然是希望,Precision和Recall都保持一個較高的水準,但事實上這兩者在某些情況下有矛盾的。比如極端情況下,我們只搜索出了一個結果,且是正確的,那么Precision就是100%,但是Recall就很低;而如果我們把所有結果都返回,那么比如Recall是100%,但是Precision就會很低。因此在不同的場合中需要自己判斷希望Precision比較高或是Recall比較高,此時我們可以引出另一個評價指標—F1-Score(F-Measure)。

F1-Score

F1分數(shù)(F1 Score),是統(tǒng)計學中用來衡量二分類模型精確度的一種指標。它同時兼顧了分類模型的精確率和召回率。F1分數(shù)可以看作是模型精確率和召回率的一種加權平均,它的最大值是1,最小值是0。(出自百度百科)

數(shù)學定義:F1分數(shù)(F1-Score),又稱為平衡F分數(shù)(BalancedScore),它被定義為精確率和召回率的調和平均數(shù)。

更一般的,我們定義Fβ分數(shù)為:

除了F1分數(shù)之外,F(xiàn)0.5分數(shù)和F2分數(shù),在統(tǒng)計學中也得到了大量應用,其中,F(xiàn)2分數(shù)中,召回率的權重高于精確率,而F0.5分數(shù)中,精確率的權重高于召回率。

Micro-F1和Macro-F1

最后看Micro-F1和Macro-F1。在第一個多標簽分類任務中,可以對每個“類”,計算F1,顯然我們需要把所有類的F1合并起來考慮。

這里有兩種合并方式:

第一種計算出所有類別總的Precision和Recall,然后計算F1。

例如依照最上面的表格來計算:Precison=5/(5+4)=0.556,Recall=5/(5+4)=0.556,然后帶入F1的公式求出F1,這種方式被稱為Micro-F1微平均。

第二種方式是計算出每一個類的Precison和Recall后計算F1,最后將F1平均。

例如上式A類:P=2/(2+0)=1.0,R=2/(2+2)=0.5,F(xiàn)1=(2*1*0.5)/1+0.5=0.667。同理求出B類C類的F1,最后求平均值,這種范式叫做Macro-F1宏平均。

本篇完,如有錯誤,還望指正。 以上這篇使用keras實現(xiàn)Precise, Recall, F1-socre方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論