文章目录

  • 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、什么是混淆矩阵

对于分类模型中,模型据测的结果有真和假两种情况,实际情况有分为正和负两种情况,因此呢,最终的结果会有呈现四种情况,也就是一个 n_classes×n_classern\_classes\times n\_classern_classes×n_classer的矩阵(n_classes表示分类类别),真正(True Positive),假正(False Positive),真负(True Negative),假负(False Negative)四个指标。
(第二个字母表示预测的结果,第一个字母表示实际的结果)TP:越测为真实际为真FP:预测为真实际为假TN:预测为假实际为真FN:预测为假实际为假(第二个字母表示预测的结果,第一个字母表示实际的结果)\\TP:越测为真实际为真\\FP:预测为真实际为假\\TN:预测为假实际为真\\FN:预测为假实际为假(第二个字母表示预测的结果,第一个字母表示实际的结果)TP:越测为真实际为真FP:预测为真实际为假TN:预测为假实际为真FN:预测为假实际为假

2、如何获取混淆矩阵

2.1 二分类

我们使用sklearn.matrix的confusion_matrix方法获取
learn.metrics.confusion_matrix(y_true,y_pred,labels=None,sample_weight=None)learn.metrics.confusion\_matrix(y\_true, y\_pred, labels=None, sample\_weight=None)learn.metrics.confusion_matrix(y_true,y_pred,labels=None,sample_weight=None)

  • 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类别
TP:对角线之和(真实值与被预测值相等)FP:每一列的元素之和减去对应的的对角线元素(一列中预测值除了与真实值相同,剩下的值实际为F但预测值还是P)FN:每一行的元素之和减去对应的对角线元素(一行中除了与真实值相同,剩下的实际值为实际值为F,预测值为N)TN:整个矩阵之和减去前三者TP:对角线之和(真实值与被预测值相等)\\ FP:每一列的元素之和减去对应的的对角线元素(一列中预测值除了与真实值相同,剩下的值实际为F但预测值还是P)\\ FN:每一行的元素之和减去对应的对角线元素(一行中除了与真实值相同,剩下的实际值为实际值为F,预测值为N)\\ TN:整个矩阵之和减去前三者TP:对角线之和(真实值与被预测值相等)FP:每一列的元素之和减去对应的的对角线元素(一列中预测值除了与真实值相同,剩下的值实际为F但预测值还是P)FN:每一行的元素之和减去对应的对角线元素(一行中除了与真实值相同,剩下的实际值为实际值为F,预测值为N)TN:整个矩阵之和减去前三者

代码如下:

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

Accuracy=TP+TNTP+FN+FP+TNAccuracy = \frac{TP+TN}{TP+FN+FP+TN}Accuracy=TP+FN+FP+TNTP+TN​

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

3.2 Positive predictive value(PPV,Precision)

Precision=TPTP+FPPrecision = \frac{TP}{TP+FP}Precision=TP+FPTP​

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

3.3 False discory rate(FDR)

FDR=FPTP+FPFDR = \frac{FP}{TP+FP}FDR=TP+FPFP​

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

3.4 False omission rete(FOR)

FOR=FNTM+FNFOR=\frac{FN}{TM+FN}FOR=TM+FNFN​

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

3.5 Negative predictive value(NPV)

NPV=TNFN+TNNPV=\frac{TN}{FN+TN}NPV=FN+TNTN​

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

3.6 True positive rate(TPR,Recall)

Recall=TPFP+FNRecall = \frac{TP}{FP+FN}Recall=FP+FNTP​

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

3.7 False positive rete(FPR),Fall-out

Fall−out=FPFP+TNFall-out = \frac{FP}{FP+TN}Fall−out=FP+TNFP​

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

3.8 False negative rate(FNR),Miss rate

FNR=FNFN+TNFNR = \frac{FN}{FN+TN}FNR=FN+TNFN​

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

3.9 True negative rate(TNR)

TNR=TNFN+TNTNR = \frac{TN}{FN+TN}TNR=FN+TNTN​

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

3.10 KS值

3.11 ROC-AUC曲线

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

4、参考资料

https://zhuanlan.zhihu.com/p/73558315
https://blog.csdn.net/u010705209/article/details/53037481#commentBox

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

  1. Python机器学习(sklearn)——分类模型评估与调参总结(下)

    21.集成方法有随机森林(random forest)和梯度提升树(gradient boosted decision tree)GBDT 随机森林中树的随机化方法有两种: (1)通过选择用于构造树的 ...

  2. python分类算法评估模型_Python机器学习(sklearn)——分类模型评估与调参总结(下)...

    21.集成方法有随机森林(random forest)和梯度提升树(gradient boosted decision tree)GBDT 随机森林中树的随机化方法有两种: (1)通过选择用于构造树的 ...

  3. 02_混淆矩阵、准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F值(F-Measure) +Roc曲线和PR曲线+sklearn中分类模型评估API+ 自己补充整理

    此博文参考: 关于ROC绘制参考博文: https://blog.csdn.net/u011630575/article/details/80250177 Python+ROC相关的博文: https ...

  4. R语言使用yardstick包的conf_mat函数计算多分类(Multiclass)模型的混淆矩阵、并使用summary函数基于混淆矩阵输出分类模型评估的其它详细指标(kappa、npv等13个)

    R语言使用yardstick包的conf_mat函数计算多分类(Multiclass)模型的混淆矩阵(confusion matrix).并使用summary函数基于混淆矩阵输出分类模型评估的其它详细 ...

  5. R语言编写自定义函数计算分类模型评估指标:准确度、特异度、敏感度、PPV、NPV、数据数据为模型预测后的混淆矩阵、比较多个分类模型分类性能(逻辑回归、决策树、随机森林、支持向量机)

    R语言编写自定义函数计算分类模型评估指标:准确度.特异度.敏感度.PPV.NPV.数据数据为模型预测后的混淆矩阵.比较多个分类模型分类性能(逻辑回归.决策树.随机森林.支持向量机) 目录

  6. python 两点曲线_python机器学习分类模型评估

    python机器学习分类模型评估 1.混淆矩阵 在分类任务下,预测结果(Predicted Condition)与正确标记(True Condition)之间存在四种不同的组合,构成混淆矩阵(适用于多 ...

  7. matplotlib绘制混淆矩阵_混淆矩阵及其可视化

    混淆矩阵(Confusion Matrix)是机器学习中用来总结分类模型预测结果的一个分析表,是模式识别领域中的一种常用的表达形式.它以矩阵的形式描绘样本数据的真实属性和分类预测结果类型之间的关系,是 ...

  8. Python分类模型评估

    Python分类模型评估 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 2 分类模型评估简介 对给给定的分类模型进行质量评估,常 ...

  9. 视频|分类模型评估:精确率、召回率、ROC曲线、AUC与R语言生存分析时间依赖性ROC实现

    最近我们被客户要求撰写关于分类模型的研究报告,包括一些图形和统计输出. 本文将帮助您回答以下问题: ROC曲线是什么? 曲线下的面积是多少? 二元分类的决策阈值是多少? 分类模型可接受的 AUC值是多 ...

  10. 分类模型评估的方法及Python实现

    提到分类模型评估相信大家应该都不会觉得陌生(不陌生你点进来干嘛[捂脸]),本文就分类模型评估的基本原理进行讲解,并手把手.肩并肩地带您实现各种评估函数.完整实现代码请参考本人的p...哦不是...gi ...

最新文章

  1. 一杯茶的功夫,掌握Git常用命令(转载)
  2. SQL2005数据导入错误:0xc00470fe 产品级别对于..
  3. 解决远程登录MYSQL数据库
  4. Git show-branch显示提交信息
  5. python安装后怎样配解释器_python解释器安装教程以及环境变量的配置
  6. 2020年工作总结大会感悟
  7. P6563-[SBCOI2020]一直在你身旁【dp,单调队列】
  8. jQuery原理第五天
  9. [转]一张图帮你搞定职业规划
  10. bzoj 1312: Hard Life 01分数规划+网络流
  11. JAVA→JDBCJava DataBase Connectivity、存储过程Stored Procedure、事务Transaction、连接池DBCP C3P0、JDBC升级替代框架
  12. html 做成ppt样式,HTML开发网页样式.ppt
  13. 纯干货:LCD屏和OLED屏的区别?手机屏幕材质各有什么区别?
  14. svn图标不显示的解决方案
  15. cpu超线程优缺点_CPU超线程对游戏帧数有多大影响?
  16. 【软件测试】一名医院的护士,带着梦追逐诗和远方,拿下测试岗14K......
  17. matlab在矩阵后面添加两行数据_用MATLAB对矩阵每两列求和
  18. [Photography] 测光
  19. Git基础-生成SSH密钥+配置密钥到远程仓库中
  20. (002)循环语句,数组,方法,走进面向对象(封装)

热门文章

  1. dvbbs 7.1版块图标感应渐变效果 From www.jfeng.cn
  2. 【目标检测】CNN的训练图像与测试图像不一致的多尺度问题
  3. 4月26 simulink数据input,与全局变量建立堆栈
  4. [redis] redis连接远程客户端查询数据
  5. FAST DFS服务搭建说明
  6. 《重构》阅读笔记-代码的坏味道
  7. SQL SERVER 查看数据库表的字段类型,是否允许为NULL,默认值,主键等
  8. 优秀的命令行文件传输程序(转)
  9. php如何判断是否为json数据(格式)
  10. “国际通信展”十年的印记