首页 > 技术文章 > 混淆矩阵、准确率、召回率、ROC曲线、AUC

douza 2021-06-23 16:57 原文

混淆矩阵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

 

 

 

 

推荐阅读