文章目录

  • 1、什么是混淆矩阵
  • 2、如何获取混淆矩阵
  • 2.1 二分类
  • 2.2 多分类
  • 3、评估数据
  • 3.1 Accuracy
  • 3.2 Positive predictive value(PPV,Precision)
  • 3.3 False discory rate(FDR)
  • 3.4 False omission rete(FOR)
  • 3.5 Negative predictive value(NPV)
  • 3.6 True positive rate(TPR,Recall)
  • 3.7 False positive rete(FPR),Fall-out
  • 3.8 False negative rate(FNR),Miss rate
  • 3.9 True negative rate(TNR)
  • 3.10 KS值
  • 3.11 ROC-AUC曲线
  • 4、参考资料

1、什么是混淆矩阵

(8)机器学习_混淆矩阵(分类模型评估)_机器学习

对于分类模型中,模型据测的结果有真和假两种情况,实际情况有分为正和负两种情况,因此呢,最终的结果会有呈现四种情况,也就是一个 (8)机器学习_混淆矩阵(分类模型评估)_混淆矩阵_02的矩阵(n_classes表示分类类别),真正(True Positive),假正(False Positive),真负(True Negative),假负(False Negative)四个指标。
(8)机器学习_混淆矩阵(分类模型评估)_二分类_03

2、如何获取混淆矩阵

2.1 二分类

我们使用sklearn.matrix的confusion_matrix方法获取
(8)机器学习_混淆矩阵(分类模型评估)_机器学习_04

  • y_true:实际结果
  • y_pred:预测结果

#伪代码
y_true=[1 0 0 1 0 1 0 0 0 0]
y_pred=[1 0 0 1 0 1 0 0 0 0]
cm = confusion_matrix(y_true,y_pred)
#[[33 1]
[ 0 11]]

我们得到的这个矩阵是:(注:这个矩阵和混淆矩阵不同,混淆矩阵是TN与TP调换位置)

TN

FP

FN

TP

2.2 多分类

>>> from sklearn.metrics import confusion_matrix
>>> y_true = [2, 0, 2, 2, 0, 1]
>>> y_pred = [0, 0, 2, 2, 0, 2]
>>> confusion_matrix(y_true, y_pred)

array([[2, 0, 0],
[0, 0, 1],
[1, 0, 2]])

对于多分类,如何求得tn,fp,fn,tp呢
对于混线矩阵每一行表示真是类,每一列表示被预测类,M[i][j]表示类别为i被预测为j类别
(8)机器学习_混淆矩阵(分类模型评估)_二分类_05


代码如下:

FP = cm.sum(axis=0) - np.diag(cm)  
FN = cm.sum(axis=1) - np.diag(cm)
TP = np.diag(cm)
TN = cm.sum() - (FP + FN + TP)


#查看每个类别的召回率(对角线元素)
cm_normalized = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
print(cm_normalized)

3、评估数据

3.1 Accuracy

(8)机器学习_混淆矩阵(分类模型评估)_机器学习_06

准确度:模型预测样本个数/模型总样本个数
Accuracy越大,说明模型的效果越好

3.2 Positive predictive value(PPV,Precision)

(8)机器学习_混淆矩阵(分类模型评估)_混淆矩阵_07

精度:模型为正类样本中,真正正类所占比例
Precision越大,模型越好

3.3 False discory rate(FDR)

(8)机器学习_混淆矩阵(分类模型评估)_机器学习_08

错误发现率:模型预测为正类样本中,真正负类样本所占比例
FDR越小,模型越好

3.4 False omission rete(FOR)

(8)机器学习_混淆矩阵(分类模型评估)_机器学习_09

错误遗漏率:预测为负类的样本正,真正正类所占比例。(模型正类漏掉比例)
FOR越小,模型越好

3.5 Negative predictive value(NPV)

(8)机器学习_混淆矩阵(分类模型评估)_二分类_10

阴性预测值:模型预测为负类样本中,真正样本所占比例
NPV越小,模型越好

3.6 True positive rate(TPR,Recall)

(8)机器学习_混淆矩阵(分类模型评估)_混淆矩阵_11

召回率:模型预测为正的样本数量占总的正类样本数量的比值
Recall越高,模型越好

3.7 False positive rete(FPR),Fall-out

(8)机器学习_混淆矩阵(分类模型评估)_多分类_12

假正率:模型预测的正类样本中,占模型负类样本比值
Fall-out越小,模型越好

3.8 False negative rate(FNR),Miss rate

(8)机器学习_混淆矩阵(分类模型评估)_多分类_13

缺失率:预测为负类样本中,正类样本所占比例
缺失值越小,模型越好

3.9 True negative rate(TNR)

(8)机器学习_混淆矩阵(分类模型评估)_二分类_14

真负类率:预测为负类样本中占所有预测为负类样本的比例
TNR越大,模型越好

3.10 KS值

(8)机器学习_混淆矩阵(分类模型评估)_多分类_15

3.11 ROC-AUC曲线

ROC曲线有fpr,tpr两个值获得
横坐标是fpr
纵坐标是tpr
曲线下方面积的值为auc(取值范围是[0.5,1.0])

4、参考资料

​https://zhuanlan.zhihu.com/p/73558315​