详解使用python绘制混淆矩阵(confusion_matrix)


Posted in Python onJuly 14, 2019

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绘制混淆矩阵(confusion_matrix)

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

Python 相关文章推荐
python生成式的send()方法(详解)
May 08 Python
python3.0 模拟用户登录,三次错误锁定的实例
Nov 02 Python
python3基于OpenCV实现证件照背景替换
Jul 18 Python
Python基于递归算法求最小公倍数和最大公约数示例
Jul 27 Python
Python中函数参数调用方式分析
Aug 09 Python
Python PIL图片添加字体的例子
Aug 22 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
Sep 10 Python
Django多进程滚动日志问题解决方案
Dec 17 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
Dec 19 Python
Python 实现黑客帝国中的字符雨的示例代码
Feb 20 Python
python 实现图片裁剪小工具
Feb 02 Python
使用Python开发贪吃蛇游戏 SnakeGame
Apr 30 Python
python+opencv像素的加减和加权操作的实现
Jul 14 #Python
Python实现制度转换(货币,温度,长度)
Jul 14 #Python
详解Python Qt的窗体开发的基本操作
Jul 14 #Python
python中selenium操作下拉滚动条的几种方法汇总
Jul 14 #Python
Python+Selenium使用Page Object实现页面自动化测试
Jul 14 #Python
Python实现Selenium自动化Page模式
Jul 14 #Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
Jul 14 #Python
You might like
网友原创的PHP模板类代码
2008/09/07 PHP
PHP 读取Postgresql中的数组
2013/04/14 PHP
单台服务器的PHP进程之间实现共享内存的方法
2014/06/13 PHP
详解phpstorm2020最新破解方法
2020/09/17 PHP
用prototype实现的简单小巧的多级联动菜单
2007/03/24 Javascript
JavaScript中也使用$美元符号来代替document.getElementById
2010/06/19 Javascript
ASP.NET MVC中EasyUI的datagrid跨域调用实现代码
2012/03/14 Javascript
js判断浏览器类型的方法
2013/08/07 Javascript
js清理Word格式示例代码
2014/02/13 Javascript
用户代理字符串userAgent可实现的四个识别
2015/09/20 Javascript
jQuery插件实现图片轮播特效
2016/06/16 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
Vue编写多地区选择组件
2017/08/21 Javascript
JS简单实现数组去重的方法分析
2017/10/14 Javascript
Node 自动化部署的方法
2017/10/17 Javascript
微信小程序websocket实现聊天功能
2020/03/30 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
JS开发常用工具函数(小结)
2019/07/04 Javascript
[03:59]DOTA2英雄梦之声_第07期_水晶室女
2014/06/23 DOTA
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
2014/11/18 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
2018/07/17 Python
Python第三方库h5py_读取mat文件并显示值的方法
2019/02/08 Python
django celery redis使用具体实践
2019/04/08 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
2019/08/08 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
谈谈对css属性box-sizing的了解
2017/01/04 HTML / CSS
css3 transform过渡抖动问题解决
2020/10/23 HTML / CSS
工程总经理工作职责
2013/12/09 职场文书
入党积极分子学习党的纲领思想汇报
2014/09/13 职场文书
学期个人自我总结
2015/02/13 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书