本篇文章我们讲一个评估方法,混淆矩阵(confusion_matrix )

混淆矩阵定义及表示含义  :

混淆矩阵以矩阵形式将数据集中的记录按照真实的类别与分类模型预测的类别判断两个标准进行汇总。其中矩阵的行表示真实值,矩阵的列表示预测值。

TP(True Positive): 将正类预测为正类数 即正确预测,真实为0,预测也为0

FN (False Negative):将正类预测为负类 即错误预测,真实为0,预测为1

FP(False Positive):将负类预测为正类数 即错误预测, 真实为1,预测为0

TN (True Negative):将负类预测为负类数,即正确预测,真实为1,预测也为1

四种评估方式:

精确率Precision=TP / (TP+FP), 在预测是Positive所有结果中,预测正确的比重

召回率recall=TP / (TP+FN), 在真实值为Positive的所有结果中,预测正确的比重

准确率accuracy=(TP+TN)  / (TP+FN+FP+TN) 所有预测为正确结果所占总预测值的比重

特异度Specificity = TN / (TN+FP) 在真实值是Negative的所有结果中,预测正确的比重

可以看到准确率中的分子值就是矩阵对角线上的值。

下面我们先以二分类为例,看下矩阵表现形式,如下:

现在我们举个列子,并画出混淆矩阵表,假如宠物店有10只动物,其中6只狗,4只猫,现在有一个分类器将这10只动物进行分类,

分类结果为5只狗,5只猫(5=1+4。),那么我们画出分类结果混淆矩阵,并进行分析,

通过混淆矩阵我们可以轻松算的真实值狗的数量(行数量相加)为6=5+1,

分类得到狗的数量(列数量相加)为5=5+0,真实猫的数量为4=0+4,

以狗为例:

Precision(狗):5 / 5 =100%     

recall (狗):5 / 6 =  83.3%

accuracy :9 / 10 = 90%

Specificity4 / 4 = 100%

那么对于多分类问题来说:

与二分类混淆矩阵一样,矩阵行数据相加是真实值类别数,列数据相加是分类后的类别数,那么相应的就有以下计算公式;

精确率_狗= 5 / 6 = 83.3%

召回率_狗 = 5 / 9 = 55.5%

通用做法:

与二分类混淆矩阵一样,矩阵行数据相加是真实值类别数,列数据相加是分类后的类别数,那么相应的就有以下计算公式;

精确率_类别1=a/(a+d+g)

召回率_类别1=a/(a+b+c)

混淆矩阵代码:

from sklearn.metrics import confusion_matrix
from sklearn.metrics import recall_score
import matplotlib.pyplot as plt# 预测数据,predict之后的预测结果集
guess = [1, 0, 1, 2, 1, 0, 1, 0, 1, 0]
# 真实结果集
fact = [0, 1, 0, 1, 2, 1, 0, 1, 0, 1]
# 类别
classes = list(set(fact))
# 排序,准确对上分类结果
classes.sort()
# 对比,得到混淆矩阵
confusion = confusion_matrix(guess, fact)
# 热度图,后面是指定的颜色块,gray也可以,gray_x反色也可以
plt.imshow(confusion, cmap=plt.cm.Blues)
# 这个东西就要注意了
# ticks 这个是坐标轴上的坐标点
# label 这个是坐标轴的注释说明
indices = range(len(confusion))
# 坐标位置放入
# 第一个是迭代对象,表示坐标的顺序
# 第二个是坐标显示的数值的数组,第一个表示的其实就是坐标显示数字数组的index,但是记住必须是迭代对象
plt.xticks(indices, classes)
plt.yticks(indices, classes)
# 热度显示仪?就是旁边的那个验孕棒啦
plt.colorbar()
# 就是坐标轴含义说明了
plt.xlabel('guess')
plt.ylabel('fact')
# 显示数据,直观些
for first_index in range(len(confusion)):for second_index in range(len(confusion[first_index])):plt.text(first_index, second_index, confusion[first_index][second_index])# 显示
plt.show()# PS:注意坐标轴上的显示,就是classes
# 如果数据正确的,对应关系显示错了就功亏一篑了
# 一个错误发生,想要说服别人就更难了from sklearn.metrics import confusion_matrix
from sklearn.metrics import recall_score
import matplotlib.pyplot as plt# 预测数据,predict之后的预测结果集
guess = [1, 0, 1, 2, 1, 0, 1, 0, 1, 0]
# 真实结果集
fact = [0, 1, 0, 1, 2, 1, 0, 1, 0, 1]
# 类别
classes = list(set(fact))
# 排序,准确对上分类结果
classes.sort()
# 对比,得到混淆矩阵
confusion = confusion_matrix(guess, fact)
# 热度图,后面是指定的颜色块,gray也可以,gray_x反色也可以
plt.imshow(confusion, cmap=plt.cm.Blues)
# 这个东西就要注意了
# ticks 这个是坐标轴上的坐标点
# label 这个是坐标轴的注释说明
indices = range(len(confusion))
# 坐标位置放入
# 第一个是迭代对象,表示坐标的顺序
# 第二个是坐标显示的数值的数组,第一个表示的其实就是坐标显示数字数组的index,但是记住必须是迭代对象
plt.xticks(indices, classes)
plt.yticks(indices, classes)
# 热度显示仪?就是旁边的那个验孕棒啦
plt.colorbar()
# 就是坐标轴含义说明了
plt.xlabel('guess')
plt.ylabel('fact')
# 显示数据,直观些
for first_index in range(len(confusion)):for second_index in range(len(confusion[first_index])):plt.text(first_index, second_index, confusion[first_index][second_index])# 显示
plt.show()# PS:注意坐标轴上的显示,就是classes
# 如果数据正确的,对应关系显示错了就功亏一篑了
# 一个错误发生,想要说服别人就更难了

模型评估——混淆矩阵confusion_matrix相关推荐

  1. 机器学习模型评估——混淆矩阵

    混淆矩阵 什么是混淆矩阵(Confusion Matrix)?我们在做分类问题时会用到机器学习分类模型,不管是二分类还是多分类问题,我们都要对模型的性能进行评估,看看模型的分类效果是否好,有多好!我们 ...

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

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

  3. [Python+sklearn] 计算混淆矩阵 confusion_matrix()函数

    python sklearn 计算混淆矩阵 confusion_matrix()函数 参考sklearn官方文档:sklearn.metrics.confusion_matrix. 功能: 计算混淆矩 ...

  4. 混淆矩阵评价指标_机器学习模型评价指标 -- 混淆矩阵

    机器学习模型评价指标 – 混淆矩阵 在机器学习领域中,混淆矩阵(confusion matrix)是一种评价分类模型好坏的形象化展示工具.其中,矩阵的每一列表示的是模型预测的样本情况:矩阵的每一行表示 ...

  5. 分类模型计算混淆矩阵

    1. 什么是混淆矩阵 混淆矩阵是评判模型结果的一种指标,属于模型评估的一部分,常用于评判分类器的优劣.即,混淆矩阵是评判模型结果的指标,属于模型评估的一部分. 此外,混淆矩阵多用于判断分类器(Clas ...

  6. 机器学习模型评价指标 -- 混淆矩阵

    机器学习模型评价指标 – 混淆矩阵 在机器学习领域中,混淆矩阵(confusion matrix)是一种评价分类模型好坏的形象化展示工具.其中,矩阵的每一列表示的是模型预测的样本情况:矩阵的每一行表示 ...

  7. sklearn使用投票器VotingClassifier算法构建多模型融合的软投票器分类器(soft voting)并自定义子分类器的权重(weights)、计算融合模型的混淆矩阵、可视化混淆矩阵

    sklearn使用投票器VotingClassifier算法构建多模型融合的软投票器分类器(soft voting)并自定义子分类器的权重(weights).计算融合模型的混淆矩阵.可视化混淆矩阵 目 ...

  8. sklearn使用投票器VotingClassifier算法构建多模型融合的软投票器分类器(soft voting)并计算融合模型的混淆矩阵、可视化混淆矩阵(confusion matrix)

    sklearn使用投票器VotingClassifier算法构建多模型融合的软投票器分类器(soft voting)并计算融合模型的混淆矩阵.可视化混淆矩阵(confusion matrix) 目录

  9. sklearn使用投票器VotingClassifier算法构建多模型融合的硬投票器分类器(hard voting)并计算融合模型的混淆矩阵、可视化混淆矩阵(confusion matrix)

    sklearn使用投票器VotingClassifier算法构建多模型融合的硬投票器分类器(hard voting)并计算融合模型的混淆矩阵.可视化混淆矩阵(confusion matrix) 目录

  10. 人工智能学习07--pytorch11--分类网络:使用pytorch和tensorflow计算分类模型的混淆矩阵

    师兄说学目标检测之前先学分类 坏了,内容好多!学学学 感谢up主,好人一生平安 混淆矩阵 什么是混淆矩阵: 横坐标:每一列属于该类的所有验证样本.每一列所有元素对应真实类别. 纵坐标:网络的预测类别. ...

最新文章

  1. C#中把货币、日期转换成中文大写
  2. 高并发架构系列:MQ消息队列的12点核心原理总结
  3. jsonobject中getkey_FastJson中JSONObject用法及常用方法总结
  4. Docker进阶-快速扩容
  5. 利用JSP编写程序初步
  6. 【数据库】数据库查询之关键字except,having
  7. 智商情商哪个重要_《所谓逆商高,就是心态好》:逆商,比情商和智商更重要...
  8. tp5自定义一个函数php,tp5 如何模块自定义函数!
  9. linux下安装java
  10. 110kv/35kv变电所无功补偿技术的研究+matlab仿真模型
  11. 以太坊-区块链开发入门
  12. html怎么取消打印空白页,怎么取消打印空白页:如何删除Excel工作表中的空白页...
  13. amcharts使用总结
  14. 美创科技与联通(浙江)产互签署战略合作协议
  15. 博客文章内容导航(实时更新)
  16. css 字体颜色 样式大全
  17. python helper函数_使函数定义以python文件顺序独立
  18. 简单网页设计静态成品分享
  19. 双线双IP机房助力电信、联通两大网络互联互通
  20. CSDN博客首行空两格

热门文章

  1. linux环境变量大全,Linux环境变量总结
  2. 手游服务器微信互通,使命召唤手游QQ和微信可以一起玩吗
  3. c盘中的软件怎么转到D盘,将c盘软件转移到d盘
  4. 魔兽争霸III数据包规范
  5. Linux查看Nvidia显卡型号
  6. 可靠性评价类毕业论文文献都有哪些?
  7. Shell脚本字符串大小写转换
  8. 内网计算机如何在线查找mac,查询局域网内全部电脑IP和mac地址
  9. 41、财务总账科目余额表,三栏式总账,三栏式明细账 查询条件科目增加多选查询
  10. 网站服务器停止运行,服务器已停止响应是怎么回事