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 matrix用法_详解使用python绘制混淆矩阵(confusion_matrix)相关推荐

  1. python selenium爬虫_详解基于python +Selenium的爬虫

    详解基于python +Selenium的爬虫 一.背景 1. Selenium Selenium 是一个用于web应用程序自动化测试的工具,直接运行在浏览器当中,支持chrome.firefox等主 ...

  2. python namedtuple用法_详解Python中namedtuple的使用

    namedtuple是Python中存储数据类型,比较常见的数据类型还有有list和tuple数据类型.相比于list,tuple中的元素不可修改,在映射中可以当键使用. namedtuple: na ...

  3. 使用python下载文件_详解使用Python下载文件的几种方法

    在使用Python进行数据抓取的时候,有时候需要保持文件或图片等,在Python中可以有多种方式实现.今天就一起来学习下. urllib.request 主要使用的是urlretrieve方法,该方法 ...

  4. 用python3做学生管理系统_详解用python实现基本的学生管理系统(文件存储版)(python3)...

    详解用python实现基本的学生管理系统(文件存储版)(python3) 来源:中文源码网    浏览: 次    日期:2019年11月5日 详解用python实现基本的学生管理系统(文件存储版)( ...

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

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

  6. python编写数据库连接工具_详解使用Python写一个向数据库填充数据的小工具(推荐)...

    一. 背景 公司又要做一个新项目,是一个合作型项目,我们公司出web展示服务,合作伙伴线下提供展示数据. 而且本次项目是数据统计展示为主要功能,并没有研发对应的数据接入接口,所有展示数据源均来自数据库 ...

  7. python zxing 识别条码_详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强...

    前言 这周和大家分享如何用python识别图像里的条码.用到的库可以是zbar.希望西瓜6辛苦码的代码不要被盗了.(zxing的话,我一直没有装好,等装好之后再写一篇) 具体步骤 前期准备 用open ...

  8. python解释器在哪里_详解查看Python解释器路径的两种方式

    进入python的安装目录, 查看python解释器 进入bin目录 # ls python(看一下是否有python解释器版本) # pwd (查看当前目录) 复制当前目录即可 1. 通过脚本查看 ...

  9. 用python写管理系统局域网_详解用python -m http.server搭一个简易的本地局域网

    工作时同事间几mb小文件的传输,一般使用QQ或者微信就足够了,但当传输文件几百MB或者几十G时,这种方法的效率就显得不足了.本篇就是简单说明一个python小功能,让大家能利用python方便的搭建一 ...

  10. python中 的用法_详解python中@的用法

    python中@的用法 @是一个装饰器,针对函数,起调用传参的作用. 有修饰和被修饰的区别,@function作为一个装饰器,用来修饰紧跟着的函数(可以是另一个装饰器,也可以是函数定义). 代码1 结 ...

最新文章

  1. IOS中Cell自定义
  2. 每天一个Linux命令-find
  3. 用python画四叶草代码-python—字符串拼接三种方法
  4. 继Science发文后,Nature也发文评论曹雪涛“误用图片”调查结果
  5. 5W2H分析法,哪哪儿都能用到的方法,人生也可以套路进来
  6. vs没有添加引用_英超:切尔西 vs 热刺,热刺准备重新登顶领头羊
  7. 高盛也上GitHub了!让交易员赚取10亿美元的神秘“利器” 即将开源
  8. 计算机上的24点游戏怎么玩,掌握基本规律,轻松玩转24点游戏
  9. 使用rufus-3.8 制作启动U盘安装Windows severs 2019
  10. 微服务下蓝绿发布、滚动发布、灰度发布等方案,必须懂!
  11. vue项目报错[Vue warn]: Property “visible“ must be accessed with “$data.visible“ because properties start
  12. 永城2021高考成绩查询,永城中考成绩查询2021
  13. 如何用光盘映像文件重装服务器系统,光盘镜像文件怎么安装|教你安装光盘镜像方法...
  14. 基于BP神经网络控制+Simulink双闭环直流调速系统仿真
  15. 牛客网SQL实战二刷 | Day1
  16. 营业增加值公式简要解析
  17. [好文精选] Behance 2019 设计趋势
  18. 会玩,有人用 Python 模拟导弹防御!
  19. [2018][PAMI]Deep Self-Evolution Clustering 笔记
  20. 如何利用批处理启动cmd并进入指定目录

热门文章

  1. 文件传阅系统无纸化文件流转系统
  2. 别墅3D户型图制作|业务承接|原创教程(二)
  3. 怎么复制黑苹果config配置_只需3步,实现黑苹果USB端口配置
  4. igbt原理动画演示视频_简单易懂的IGBT工作原理分析
  5. 手机网页 弹窗layerUI
  6. 在IEEE会议论文LaTeX模板中添加页码
  7. unity学习之可编程渲染管线 SRP Batcher
  8. Qt、C++汽车客运公司售票系统
  9. maxon电机驱动简介
  10. 关于抛异常后事务回滚的一点小事儿