Sklearn對多分類的每個類別進行指標評(P R)


Sklearn中的召回度和精准度函數

  在上一篇博文中已經介紹過了精准度和召回度的定義,以及該如何利用混淆矩陣來進行計算。這一章節將會利用sklearn的包來直接計算出分類(多分類和二分類)的召回度和精准度。主要是采用sklearn.metrics中的classification_report, precision_score, confusion_matrix, recall_score這幾個包。

 precision_score:精准度

from sklearn.metrics import precision_score y_true = [1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0] y_pre = [1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0] precision_score(y_true, y_pre)
0.42857142857142855
 
        

 recall_score:召回度

from sklearn.metrics import recall_score y_true = [1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0] y_pre = [1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0] recall_score(y_true, y_pre)
0.6666666666666666
 
        

confusion_matrix:混淆矩陣

from sklearn.metrics import confusion_matrix y_true = [1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0] y_pre = [1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0] confusion_matrix(y_true, y_pre)
array([[2, 4], [2, 4]])
 
        

  注意以上的三個函數,都是真實值arrary在第一個參數,預測值arrary在第二個參數。其中混淆矩陣沒有行和列名,第一個參數表示的是行標,第二個參數表示的是列標,順序是從小到大,字母的話就是字典序從小到大,這個例子中行名是真實值,列名是預測值。

  預測值
0 1
真實值 0 2 4
1 2 4

  以上的三種函數例子都是以二分類為例子的,下面將介紹多分類的情況,多分類的情況我非常推薦classification_report這個包,因為這個包可以非常好的展現出每一類單獨的PR(精度和召回),而且也有平均之后(macro, weighted)的結果(具體的含義可以看看參考鏈接中的博文)。

classification_report:分類報告

from sklearn.metrics import classification_report y_true = [1, 2, 1, 1, 2, 0, 0, 2, 1, 1, 0, 2, 1, 2, 0, 1, 1, 2, 2, 1, 0] y_pre = [1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 2, 2, 1, 0, 0, 0] print(classification_report(y_true, y_pre, labels=[0,1,2]))
              precision    recall  f1-score support 0 0.12      0.20      0.15         5
           1       0.27      0.33      0.30         9
           2       0.00      0.00      0.00         7 accuracy 0.19        21 macro avg 0.13      0.18      0.15        21 weighted avg 0.15      0.19      0.17        21

  其實這種方法,也可以對字符串的分類來展示。

from sklearn.metrics import classification_report y_true = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] y_pre = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] print(classification_report(y_true, y_pre, labels=['','','']))
                precision    recall  f1-score support 多 0.12      0.20      0.15         50.27      0.33      0.30         90.00      0.00      0.00         7 accuracy 0.19        21 macro avg 0.13      0.18      0.15        21 weighted avg 0.15      0.19      0.17        21

  注意到使用這個函數的時候,參數labels非常重要,最好要賦值,雖然是可選參數,但是如果不給值,但最后的結果表格會比較難理解。

 

參考網址:

https://www.cnblogs.com/zhangxianrong/p/14884257.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM