sklearn.metrics.classification_report例子說明

關於sklearn.metrics.classification的說明,不少博客都是列幾行代碼再說一下precision,recall,F1-score定義就完事兒,實在是難以理解其用法,本文將用例子與算式結合的方式說明

 

例子

import numpy as np
from sklearn.metrics import classification_report
y_true =np.array([0,1,2,2,2,1])
y_pred = np.array([0,0,1,2,2,1])
print(classification_report(y_true,y_pred))

結果

              precision    recall  f1-score   support

           0       0.50      1.00      0.67         1
           1       0.50      0.50      0.50         2
           2       1.00      0.67      0.80         3

   micro avg       0.67      0.67      0.67         6
   macro avg       0.67      0.72      0.66         6
weighted avg       0.75      0.67      0.68         6

我們一共擁有0,1,2三個類別,所以輸出結果中有0,1,2三行

True Positive (真正, TP)被模型預測爲正的正樣本;

True Negative(真負 , TN)被模型預測爲負的負樣本 ;

False Positive (假正, FP)被模型預測爲正的負樣本;

False Negative(假負 , FN)被模型預測爲負的正樣本;

precision:TP/(TP+FP)

recall:TP/(TP+FN)

f1-score:2*precision*recall/(precision+recall)

 

行0:

precison:y_pred中有兩個0,對應真實標籤一個0一個1,所以TP=1,FP=1,1/(1+2)=0.5

recall:y_true中有1個在預測中被預測爲0,並且沒有出現本來是0但在預測中被預測爲別的值的情況出現,所以TP爲1FN爲0, 1/(1+0)=1

行1:

precision:y_pred中有兩個1,對應真實標籤一個2一個1,所以TP=1,FP=1,1/(1+2)=0.5

recall:y_true中有1個在預測中被預測爲0,並且沒有出現本來是0但在預測中被預測爲別的值的情況出現,所以TP爲1FN爲0, 1/(1+0)=1

recall:y_true中有2個在預測中被預測爲1,對應真實標籤一個2一個1,所以TP爲1FN爲1, 1/(1+1)=0.5

 

行2可以由讀者作爲練習進行參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章