这篇文章主要介绍了详解使用python绘制混淆矩阵(confusion_matrix),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Summary

涉及到分类问题,我们经常需要通过可视化混淆矩阵来分析实验结果进而得出调参思路,本文介绍如何利用python绘制混淆矩阵(confusion_matrix),本文只提供代码,给出必要注释。

Code​

# -*-coding:utf-8-*-

from sklearn.metrics import confusion_matrix

import matplotlib.pyplot as plt

import numpy as np

#labels表示你不同类别的代号,比如这里的demo中有13个类别

labels = ['A', 'B', 'C', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O']

'''

具体解释一下re_label.txt和pr_label.txt这两个文件,比如你有100个样本

去做预测,这100个样本中一共有10类,那么首先这100个样本的真实label你一定

是知道的,一共有10个类别,用[0,9]表示,则re_label.txt文件中应该有100

个数字,第n个数字代表的是第n个样本的真实label(100个样本自然就有100个

数字)。

同理,pr_label.txt里面也应该有1--个数字,第n个数字代表的是第n个样本经过

你训练好的网络预测出来的预测label。

这样,re_label.txt和pr_label.txt这两个文件分别代表了你样本的真实label和预测label,然后读到y_true和y_pred这两个变量中计算后面的混淆矩阵。当然,不一定非要使用这种txt格式的文件读入的方式,只要你最后将你的真实

label和预测label分别保存到y_true和y_pred这两个变量中即可。

'''

y_true = np.loadtxt('../Data/re_label.txt')

y_pred = np.loadtxt('../Data/pr_label.txt')

tick_marks = np.array(range(len(labels))) + 0.5

def plot_confusion_matrix(cm, title='Confusion Matrix', cmap=plt.cm.binary):

plt.imshow(cm, interpolation='nearest', cmap=cmap)

plt.title(title)

plt.colorbar()

xlocations = np.array(range(len(labels)))

plt.xticks(xlocations, labels, rotation=90)

plt.yticks(xlocations, labels)

plt.ylabel('True label')

plt.xlabel('Predicted label')

cm = confusion_matrix(y_true, y_pred)

np.set_printoptions(precision=2)

cm_normalized = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]

print cm_normalized

plt.figure(figsize=(12, 8), dpi=120)

ind_array = np.arange(len(labels))

x, y = np.meshgrid(ind_array, ind_array)

for x_val, y_val in zip(x.flatten(), y.flatten()):

c = cm_normalized[y_val][x_val]

if c > 0.01:

plt.text(x_val, y_val, "%0.2f" % (c,), color='red', fontsize=7, va='center', ha='center')

# offset the tick

plt.gca().set_xticks(tick_marks, minor=True)

plt.gca().set_yticks(tick_marks, minor=True)

plt.gca().xaxis.set_ticks_position('none')

plt.gca().yaxis.set_ticks_position('none')

plt.grid(True, which='minor', linestyle='-')

plt.gcf().subplots_adjust(bottom=0.15)

plot_confusion_matrix(cm_normalized, title='Normalized confusion matrix')

# show confusion matrix

plt.savefig('../Data/confusion_matrix.png', format='png')

plt.show()

Result

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持

python混淆矩阵,详解使用python绘制混淆矩阵(confusion_matrix)相关推荐

  1. 关于python的浮点数类型、以下_python入门教程Python 浮点数数据类型详解 [学习 Python 必备基础知识][看此一篇就够了]...

    python基础语法.jpg 您的"关注"和"点赞",是信任,是认可,是支持,是动力...... 如意见相佐,可留言. 本人必将竭尽全力试图做到准确和全面,终其 ...

  2. sklearn预测评估指标:混淆矩阵计算详解-附Python计算代码

    目录 前言 混淆矩阵 python代码 前言 很多时候需要对自己模型进行性能评估,对于一些理论上面的知识我想基本不用说明太多,关于校验模型准确度的指标主要有混淆矩阵.准确率.精确率.召回率.F1 sc ...

  3. python中opener_详解在Python程序中使用Cookie的教程

    大家好哈,上一节我们研究了一下爬虫的异常处理问题,那么接下来我们一起来看一下Cookie的使用. 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在 ...

  4. python开发技术详解pdf下载_python开发技术详解附源码-python开发技术详解电子书pdf下载高清去水印版-精品下载...

    Python开发技术详解适合Python爱好者.大中专院校的学生.社会培训班的学生以及用Python语言进行系统管理.GUI开发.Web开发.数据库编程.网络编程的人员使用. 内容提要 Python是 ...

  5. python编程入门与案例详解-quot;Python小屋”免费资源汇总(截至2018年11月28日)...

    原标题:"Python小屋"免费资源汇总(截至2018年11月28日) 为方便广大Python爱好者查阅和学习,特整理汇总微信公众号"Python小屋"开通29 ...

  6. AidLux“换脸”案例源码详解 (Python)

    "换脸"案例源码详解 (Python) faceswap_gui.py用于换脸,可与facemovie_gui.py身体互换源码(上一篇文章)对照观看 打开faceswap_gui ...

  7. 利用python处理dna序列_详解基于python的全局与局部序列比对的实现(DNA)

    程序能实现什么 a.完成gap值的自定义输入以及两条需比对序列的输入 b.完成得分矩阵的计算及输出 c.输出序列比对结果 d.使用matplotlib对得分矩阵路径的绘制 一.实现步骤 1.用户输入步 ...

  8. Python字符编码详解

    Python字符编码详解 转自http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html Python字符编码详解 本文简单介绍了各种常用的 ...

  9. windows上安装Anaconda和python的教程详解

    一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...

最新文章

  1. git diff Git查看版本改动
  2. initrd映像文档的作用和制作
  3. 测量几种不同颜色的LED的V-A 曲线,以及它们作为STM32的P2(Boot1)下拉电阻
  4. linux unzip命令不存在_15个常用基础命令Linux(很多人不知道!)
  5. Windows2003屏蔽IP
  6. 中断处理函数_ARM的中断处理 [二]
  7. GDAL源码剖析(四)之命令行程序说明二
  8. idea导入一个工程后只显示pom文件_P1搭建第一个springboot应用
  9. MODIS R包下载数据
  10. adams语句_ADAMS简单教程(上)讲解.ppt
  11. 银河麒麟安装Redis 6.0.3
  12. 公关营销策划书的要点及分析
  13. 三菱PLC CCD控制ST程序 本PLC程序中CCD控制用的ST结构化语言,程序都有注释
  14. 人人开源 / renren-security/小记(二)
  15. maven将第三方依赖包添加到pom文件
  16. 已知差异脑区MNI坐标,如何将MNI坐标转化为AAL分区和布罗得曼分区Brodmann area名称
  17. VB和VBS、VBA的区别及作用
  18. 如何安全升级 TiDB
  19. 每日一题01、02(斐波那契凤尾、淘宝网店、美国节日、分解因数)
  20. 从UE4源代码启动、创建UE4新项目

热门文章

  1. 美国人初学编程代码之三
  2. 从 Secure Element 到 Android KeyStore
  3. oracle付款汇兑损益怎么产生,月末汇兑损益怎么算调整分录如何做
  4. ac.find_template 踩坑,寻找相似图片,安卓自动化代码
  5. 【医学图像分割】CT医学图像的预处理(重采样)
  6. sql是什么mysql是什么_sql是什么意思
  7. Web安全—文件上传漏洞
  8. 数据库数据采集利器FlinkCDC
  9. EasyPusher进行Android UVC外接摄像头直播推送实现方法
  10. 多核cpu与多线程理解