详解使用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的dict,set,list,tuple应用详解
Jul 24 Python
详解在Python程序中使用Cookie的教程
Apr 30 Python
django 常用orm操作详解
Sep 13 Python
Django中redis的使用方法(包括安装、配置、启动)
Feb 21 Python
分分钟入门python语言
Mar 20 Python
python学习基础之循环import及import过程
Apr 22 Python
浅谈python多进程共享变量Value的使用tips
Jul 16 Python
解决django接口无法通过ip进行访问的问题
Mar 27 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
May 23 Python
Pandas读取csv时如何设置列名
Jun 02 Python
python 下载文件的多种方法汇总
Nov 17 Python
python 爬取小说并下载的示例
Dec 07 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
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
制作个性化的WordPress登陆界面的实例教程
2016/05/21 PHP
PHP正则匹配到2个字符串之间的内容方法
2018/12/24 PHP
JavaScript 原型链学习总结
2010/10/29 Javascript
js实现checkbox全选、不选与反选的方法
2015/02/09 Javascript
jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
2016/08/25 Javascript
利用原生js和jQuery实现单选框的勾选和取消操作的方法
2016/09/04 Javascript
JS弹出窗口的运用与技巧大全
2016/11/01 Javascript
Bootstrap3下拉菜单的实现
2017/02/22 Javascript
微信小程序中的swiper组件详解
2017/04/14 Javascript
JavaScript模块详解
2017/12/18 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
微信小程序实现下拉框功能
2019/07/16 Javascript
JS 创建对象的模式实例小结
2020/04/28 Javascript
vue 封装面包屑组件教程
2020/11/16 Javascript
JS如何实现在弹出窗口中加载页面
2020/12/03 Javascript
[01:04:49]KG vs LGD 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python检查字符串是否是正确ISBN的方法
2015/07/11 Python
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
python将字典内容存入mysql实例代码
2018/01/18 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
Python实现决策树并且使用Graphviz可视化的例子
2019/08/09 Python
简单了解Pandas缺失值处理方法
2019/11/16 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
企业面试题试卷附带答案
2015/12/20 面试题
司法局群众路线教育实践活动开展情况总结
2014/10/25 职场文书
优秀班集体事迹材料
2014/12/25 职场文书
上班迟到检讨书范文
2015/05/06 职场文书
2015入党自传格式范文
2015/06/26 职场文书
电视新闻稿
2015/07/17 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书
2016年第32个教师节红领巾广播稿
2015/12/18 职场文书
Python基础之字符串格式化详解
2021/04/21 Python