详解使用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 相关文章推荐
web.py在SAE中的Session问题解决方法(使用mysql存储)
Jun 24 Python
Python提取网页中超链接的方法
Sep 18 Python
python pandas实现excel转为html格式的方法
Oct 23 Python
将pandas.dataframe的数据写入到文件中的方法
Dec 07 Python
Python 确定多项式拟合/回归的阶数实例
Dec 29 Python
Python使用pydub库对mp3与wav格式进行互转的方法
Jan 10 Python
Python中最大递归深度值的探讨
Mar 05 Python
python仿抖音表白神器
Apr 08 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
Jul 01 Python
python实现的汉诺塔算法示例
Oct 23 Python
Python随机数函数代码实例解析
Feb 09 Python
Python如何对齐字符串
Jul 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模板技术[转]
2007/01/04 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
php防止网站被攻击的应急代码
2015/10/21 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
2017年最新PHP经典面试题目汇总(上篇)
2017/03/17 PHP
关于Blog顶部的滚动导航条代码
2006/09/25 Javascript
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
2013/06/25 Javascript
用js来刷新当前页面保留参数的具体实现
2013/12/23 Javascript
使用forever管理nodejs应用教程
2014/06/03 NodeJs
jQuery实现类似淘宝网图片放大效果的方法
2015/07/08 Javascript
Vue响应式添加、修改数组和对象的值
2017/03/20 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
layui实现动态和静态分页
2018/04/28 Javascript
微信小程序实现topBar底部选择栏效果
2018/07/20 Javascript
Jquery异步上传文件代码实例
2019/11/13 jQuery
[44:51]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第二场
2018/04/05 DOTA
Python中获取网页状态码的两个方法
2014/11/03 Python
Python写入数据到MP3文件中的方法
2015/07/10 Python
Python利用字典将两个通讯录文本合并为一个文本实例
2018/01/16 Python
使用sklearn之LabelEncoder将Label标准化的方法
2018/07/11 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
你需要学会的8个Python列表技巧
2020/06/24 Python
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
美国购买体育赛事门票网站:TicketCity
2019/03/06 全球购物
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
蛋糕店的商业计划书范文
2014/01/27 职场文书
迎八一活动主题
2014/01/31 职场文书
大学新学期计划书
2014/04/28 职场文书
面试必备的求职信
2014/05/25 职场文书
保卫钓鱼岛口号
2014/06/20 职场文书
制冷与空调专业毕业生推荐信
2014/07/07 职场文书
Python爬虫之爬取二手房信息
2021/04/27 Python
分析SQL窗口函数之排名窗口函数
2022/04/21 Oracle
el-table-column 内容不自动换行的解决方法
2022/08/14 Vue.js