1. 程式人生 > 其它 >混淆矩陣、準確率、召回率、ROC曲線、AUC

混淆矩陣、準確率、召回率、ROC曲線、AUC

混淆矩陣confusion matrix

  混淆矩陣也稱誤差矩陣,是表示精度評價的一種標準格式,用n行n列的矩陣形式來表示。

  混淆矩陣的每一列代表了預測類別,每一列的總數表示預測為該類別的資料的數目;每一行代表了資料的真實歸屬類別,每一行的資料總數表示該類別的資料例項的數目。每一列中的數值表示真實資料被預測為該類的數目:第一行第一列中的43表示有43個實際歸屬第一類的例項被預測為第一類,同理,第一行第二列的2表示有2個實際歸屬為第一類的例項被錯誤預測為第二類。

Precison(查準率):預測為正例的樣本中真正正例的比例。

Recall(召回率):真正為正例的樣本有多少被預測出來。

from sklearn.metrics import confusion_matrix, precision_recall_curve, auc, roc_auc_score, roc_curve, recall_score, classification_report
#混淆矩陣
cnf_matrix = confusion_matrix(y_t,y_p)
recall_score = cnf_matrix[0,0]/(cnf_matrix[1,0]+cnf_matrix[0,0])

ROC(Receiver Operating Characteristic Curve)

  ROC曲線及AUC常被用來評價一個二值分類器的優劣。在實際的資料集中經常會出現類別不平衡現象,即負樣本比正樣本多很多(或者相反),而且測試資料中的正負樣本的分佈也可能隨著時間而變化。而在這種情況下,ROC曲線能夠保持不變。

橫,縱軸的計算公式:

預測為正例的樣本中有多少真正的正例

所有的正例中有多少被預測出來

所有的負樣本中有多少被預測為正例,Sensitivity

分類器預測的正類中實際正例項佔所有正例項的比例,等同於recall

隨著閾值的逐漸減小,越來越多的例項被劃分為正類,但是這些正類中同樣也摻雜著真正的負例項,即TPR和FPR會同時增大。閾值最大時,對應座標點為(0,0),閾值最小時,對應座標點(1,1)。

如下面這幅圖,(a)圖中實線為ROC曲線,線上每個點對應一個閾值。

橫軸FPR:1-TNR,1-Specificity,FPR越大,預測正類中實際負類越多。

縱軸TPR:Sensitivity(正類覆蓋率),TPR越大,預測正類中實際正類越多。

理想目標:TPR=1,FPR=0,即圖中(0,1)點,故ROC曲線越靠攏(0,1)點,越偏離45度對角線越好,Sensitivity、Specificity越大效果越好。

 # Roc曲線
 # https://www.cnblogs.com/gatherstars/p/6084696.html
 fpr, tpr,thresholds = roc_curve(y_t,y_p)
 roc_auc= auc(fpr,tpr)

參考文件:
https://blog.csdn.net/u013385925/article/details/80385873