Matplotlib绘制混淆矩阵的实现


Posted in Python onMay 27, 2021

对于机器学习多分类模型来说,其评价指标除了精度之外,常用的还有混淆矩阵和分类报告,下面来展示一下如何绘制混淆矩阵,这在论文中经常会用到。

代码如下:

import itertools
import matplotlib.pyplot as plt
import numpy as np
# 绘制混淆矩阵
def plot_confusion_matrix(cm, classes, normalize=False, title='Confusion matrix', cmap=plt.cm.Blues):
    """
    - cm : 计算出的混淆矩阵的值
    - classes : 混淆矩阵中每一行每一列对应的列
    - normalize : True:显示百分比, False:显示个数
    """
    if normalize:
        cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
        print("显示百分比:")
        np.set_printoptions(formatter={'float': '{: 0.2f}'.format})
        print(cm)
    else:
        print('显示具体数字:')
        print(cm)
    plt.imshow(cm, interpolation='nearest', cmap=cmap)
    plt.title(title)
    plt.colorbar()
    tick_marks = np.arange(len(classes))
    plt.xticks(tick_marks, classes, rotation=45)
    plt.yticks(tick_marks, classes)
    # matplotlib版本问题,如果不加下面这行代码,则绘制的混淆矩阵上下只能显示一半,有的版本的matplotlib不需要下面的代码,分别试一下即可
    plt.ylim(len(classes) - 0.5, -0.5)
    fmt = '.2f' if normalize else 'd'
    thresh = cm.max() / 2.
    for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
        plt.text(j, i, format(cm[i, j], fmt),
                 horizontalalignment="center",
                 color="white" if cm[i, j] > thresh else "black")
    plt.tight_layout()
    plt.ylabel('True label')
    plt.xlabel('Predicted label')
    plt.show()

测试数据:

cnf_matrix = np.array([[8707, 64, 731, 164, 45],
                      [1821, 5530, 79, 0, 28],
                      [266, 167, 1982, 4, 2],
                      [691, 0, 107, 1930, 26],
                      [30, 0, 111, 17, 42]])
attack_types = ['Normal', 'DoS', 'Probe', 'R2L', 'U2R']

第一种情况:显示百分比

plot_confusion_matrix(cnf_matrix, classes=attack_types, normalize=True, title='Normalized confusion matrix')

效果:

Matplotlib绘制混淆矩阵的实现

Matplotlib绘制混淆矩阵的实现

第二种情况:显示数字

plot_confusion_matrix(cnf_matrix, classes=attack_types, normalize=False, title='Normalized confusion matrix')

效果:

Matplotlib绘制混淆矩阵的实现

Matplotlib绘制混淆矩阵的实现

到此这篇关于Matplotlib绘制混淆矩阵的实现的文章就介绍到这了,更多相关Matplotlib 混淆矩阵内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
Jan 22 Python
Python删除空文件和空文件夹的方法
Jul 14 Python
Python2实现的LED大数字显示效果示例
Sep 04 Python
Python数据分析matplotlib设置多个子图的间距方法
Aug 03 Python
浅析PyTorch中nn.Module的使用
Aug 18 Python
Django 博客实现简单的全文搜索的示例代码
Feb 17 Python
Python Selenium 设置元素等待的三种方式
Mar 18 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
Jun 02 Python
使用numpy nonzero 找出非0元素
May 14 Python
Django实现drf搜索过滤和排序过滤
Jun 21 Python
Pygame Rect区域位置的使用(图文)
Nov 17 Python
Python matplotlib多个子图绘制整合
Apr 13 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
PyTorch dropout设置训练和测试模式的实现
May 27 #Python
pytorch Dropout过拟合的操作
浅谈pytorch中的dropout的概率p
May 27 #Python
让文件路径提取变得更简单的Python Path库
Pytorch中的数据集划分&正则化方法
Pytorch 如何实现常用正则化
You might like
深入解析yii权限分级式访问控制的实现(非RBAC法)
2013/06/13 PHP
php打开远程文件的方法和风险及解决方法
2013/11/12 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
PHP获取二维数组中某一列的值集合
2015/12/25 PHP
详解js异步文件加载器
2016/01/24 PHP
教你如何使用node.js制作代理服务器
2014/11/26 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
2015/01/18 Javascript
jQuery中offsetParent()方法用法实例
2015/01/19 Javascript
NodeJS Web应用监听sock文件实例
2015/02/18 NodeJs
JQuery中基础过滤选择器用法实例分析
2015/05/18 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
2016/06/17 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
分析javascript原型及原型链
2018/03/18 Javascript
vue全局组件与局部组件使用方法详解
2018/03/29 Javascript
浅谈在vue中使用mint-ui swipe遇到的问题
2018/09/27 Javascript
JS实现从对象获取对象中单个键值的方法示例
2019/06/05 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
2020/07/19 Javascript
[01:33]PWL开团时刻DAY2-开雾与反开雾
2020/10/31 DOTA
利用PyInstaller将python程序.py转为.exe的方法详解
2017/05/03 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
python重要函数eval多种用法解析
2020/01/14 Python
Python 输出详细的异常信息(traceback)方式
2020/04/08 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
使用CSS3来实现滚动视差效果的教程
2015/08/24 HTML / CSS
CSS3点击按钮实现背景渐变动画效果
2016/10/19 HTML / CSS
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
如果重写了对象的equals()方法,需要考虑什么
2014/11/02 面试题
优秀党支部事迹材料
2014/01/14 职场文书
项目合作意向书范本
2014/04/01 职场文书
励志演讲稿800字
2014/08/21 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
Django Paginator分页器的使用示例
2021/06/23 Python
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python