详解使用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 连连看连接算法
Nov 22 Python
探究Python中isalnum()方法的使用
May 18 Python
python requests 使用快速入门
Aug 31 Python
Python栈算法的实现与简单应用示例
Nov 01 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
如何使用python把ppt转换成pdf
Jun 29 Python
解决django服务器重启端口被占用的问题
Jul 26 Python
Python中zip函数如何使用
Jun 04 Python
idea2020手动安装python插件的实现方法
Jul 17 Python
Python爬取12306车次信息代码详解
Aug 12 Python
python自动打开浏览器下载zip并提取内容写入excel
Jan 04 Python
Pandas自定义选项option设置
Jul 25 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如何透过ODBC来存取数据库
2006/10/09 PHP
phpfans留言版用到的数据操作类和分页类
2007/01/04 PHP
NOD32 v2.70.32 简体中文封装版 提供下载了
2007/02/27 PHP
javascript 面向对象,实现namespace,class,继承,重载
2009/10/29 Javascript
幻灯片带网页设计中的20个奇妙应用示例小结
2012/05/27 Javascript
从QQ网站中提取的纯JS省市区三级联动菜单
2013/12/25 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
jQuery中:only-child选择器用法实例
2015/01/03 Javascript
jquery制作LED 时钟特效
2015/02/01 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
js常用的继承--组合式继承
2017/03/06 Javascript
JavaScript使用FileReader实现图片上传预览效果
2020/03/27 Javascript
详解如何去除vue项目中的#——History模式
2017/10/13 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
vsCode安装使用教程和插件安装方法
2020/08/24 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
Vue商品控件与购物车联动效果的实例代码
2019/07/21 Javascript
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
2019/09/05 Javascript
微信小程序实现canvas分享朋友圈海报
2020/06/21 Javascript
Python collections模块实例讲解
2014/04/07 Python
python使用BeautifulSoup分页网页中超链接的方法
2015/04/04 Python
python修改操作系统时间的方法
2015/05/18 Python
python儿童学游戏编程知识点总结
2019/06/03 Python
在Python中使用MongoEngine操作数据库教程实例
2019/12/03 Python
如何使用python切换hosts文件
2020/04/29 Python
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
财务会计人员岗位职责
2013/11/30 职场文书
元旦晚会邀请函
2014/01/27 职场文书
商场消防演习方案
2014/02/12 职场文书
我的梦想演讲稿
2014/04/30 职场文书
社区义诊活动总结
2014/04/30 职场文书
医院见习报告范文
2014/11/03 职场文书
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL