混淆矩阵、准确率、召回率、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