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可以由读者作为练习进行参考

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