一般的二分類任務(wù)需要的評價(jià)指標(biāo)有4個
- accuracy
- precision
- recall
- f1-score
四個指標(biāo)的計(jì)算公式如下
?
計(jì)算這些指標(biāo)要涉及到下面這四個概念,而它們又構(gòu)成了混淆矩陣
- TP (True Positive)
- FP (False Positive)
- TN (True Negative)
- FN (False Negative)
混淆矩陣 | 預(yù)測值 | ||
0 | 1 | ||
實(shí)際值 | 0 | TN | FP |
1 | FN | TP |
這里我給出的混淆矩陣是按照sklearn-metrics-confusion_matrix的形式繪制的。
Negative中文譯作陰性,一般指標(biāo)簽0;Positive中文譯作陽性,一般指標(biāo)簽1。
True中文譯作預(yù)測正確;False中文譯作預(yù)測錯誤。
TN? 預(yù)測正確(True)并且預(yù)測值為陰性(Negative)即實(shí)際值和預(yù)測值均為0
TP? 預(yù)測正確(True)并且預(yù)測值為陽性(Positive)即實(shí)際值和預(yù)測值均為1
FN? 預(yù)測錯誤(False)并且預(yù)測值為陰性(Negative)即實(shí)際值為1,預(yù)測值為0
FP? 預(yù)測錯誤(False)并且預(yù)測值為陽性(Positive)即實(shí)際值為0,預(yù)測值為1
下面以實(shí)際代碼為例進(jìn)行介紹
from sklearn import metrics
print(metrics.confusion_matrix(y_true=[0, 0, 0, 1, 1, 1],
y_pred=[1, 1, 1, 0, 1, 0]))
這里的y_true是實(shí)際值,y_pred是預(yù)測值,可以觀察到
TN=0,沒有樣本實(shí)際值和預(yù)測值同時(shí)為0
TP=1,只有第5個樣本實(shí)際值和預(yù)測值均為1
FN=2,第4,6個樣本實(shí)際值為1且預(yù)測值為0
FP=3,第1,2,3個樣本實(shí)際值為0且預(yù)測值為1
輸出結(jié)果也和我們觀察的一致
[[0 3]
[2 1]]
編寫函數(shù)根據(jù)混淆矩陣計(jì)算 accuracy, precision, recall, f1-score
def cal(array):
tp = array[1][1]
tn = array[0][0]
fp = array[0][1]
fn = array[1][0]
a = (tp+tn)/(tp+tn+fp+fn)
p = tp/(tp+fp)
r = tp/(tp+fn)
f = 2*p*r/(p+r)
print(a,p,r,f)
使用編寫的函數(shù)cal計(jì)算該混淆矩陣的四項(xiàng)指標(biāo),并與metric自帶的分類報(bào)告(classification_report)函數(shù)的結(jié)果進(jìn)行比較,這里第三個參數(shù)digits=4表示保留4位小數(shù)
cal([[0, 3],[2, 1]])
print(metrics.classification_report(y_true=[0, 0, 0, 1, 1, 1], y_pred=[1, 1, 1, 0, 1, 0], digits=4))
運(yùn)行結(jié)果如下,可以發(fā)現(xiàn)兩者的計(jì)算結(jié)果一致。
0.16666666666666666 0.25 0.3333333333333333 0.28571428571428575
precision recall f1-score support
0 0.0000 0.0000 0.0000 3
1 0.2500 0.3333 0.2857 3
accuracy 0.1667 6
macro avg 0.1250 0.1667 0.1429 6
weighted avg 0.1250 0.1667 0.1429 6
這里需要補(bǔ)充說明一下,為什么0那一行和1那一行都有precision, recall, f1-score。文章來源:http://www.zghlxwxcb.cn/news/detail-456181.html
一般來說,我們通常計(jì)算的這三項(xiàng)指標(biāo)均是把1視為陽性,把0視為陰性,以1作為研究對象。所以1那一行的三項(xiàng)指標(biāo)的值和cal函數(shù)計(jì)算的結(jié)果一致。而0那一行表示把0作為研究對象。文章來源地址http://www.zghlxwxcb.cn/news/detail-456181.html
到了這里,關(guān)于一文帶你搞懂sklearn.metrics混淆矩陣的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!