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 相关文章推荐
python实现图片批量剪切示例
Mar 25 Python
Python生成数字图片代码分享
Oct 31 Python
Python解析命令行读取参数--argparse模块使用方法
Jan 23 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
May 04 Python
python实现判断一个字符串是否是合法IP地址的示例
Jun 04 Python
python opencv实现运动检测
Jul 10 Python
在django中,关于session的通用设置方法
Aug 06 Python
使用Python快乐学数学Github万星神器Manim简介
Aug 07 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
Aug 19 Python
python mqtt 客户端的实现代码实例
Sep 25 Python
Pytorch中Tensor与各种图像格式的相互转化详解
Dec 26 Python
python的html标准库
Apr 29 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
PyTorch dropout设置训练和测试模式的实现
May 27 #Python
pytorch Dropout过拟合的操作
浅谈pytorch中的dropout的概率p
May 27 #Python
让文件路径提取变得更简单的Python Path库
Pytorch中的数据集划分&正则化方法
Pytorch 如何实现常用正则化
You might like
PHP中的array数组类型分析说明
2010/07/27 PHP
php 操作符与控制结构
2012/03/07 PHP
php对数组排序的简单实例
2013/12/25 PHP
php获取从百度搜索进入网站的关键词的详细代码
2014/01/08 PHP
PHP简单读取xml文件的方法示例
2017/04/20 PHP
用JS剩余字数计算的代码
2008/07/03 Javascript
JavaScript 弹出窗体点击按钮返回选择数据的实现
2010/04/01 Javascript
javascript 获取页面的高度及滚动条的位置的代码
2010/05/06 Javascript
正则表达式搭配js轻松处理json文本方便而老古
2013/02/17 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
节点的插入之append()和appendTo()的用法介绍
2014/01/13 Javascript
优化Node.js Web应用运行速度的10个技巧
2014/09/03 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
2020/06/29 Javascript
Angular4学习笔记之实现绑定和分包
2017/08/01 Javascript
Node.js服务器开启Gzip压缩教程
2017/08/11 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
Python验证码识别的方法
2015/07/10 Python
python自定义异常实例详解
2017/07/11 Python
python图形界面开发之wxPython树控件使用方法详解
2020/02/24 Python
Django 解决新建表删除后无法重新创建等问题
2020/05/21 Python
opencv 图像轮廓的实现示例
2020/07/08 Python
python map比for循环快在哪
2020/09/21 Python
Python字符串的15个基本操作(小结)
2021/02/03 Python
美国时尚配饰品牌:Dooney & Bourke
2017/11/14 全球购物
医药工作岗位求职信分享
2013/12/31 职场文书
机关单位动员会主持词
2014/03/20 职场文书
大学运动会加油稿200字(5篇)
2014/09/27 职场文书
2014年四风个人对照检查及整改措施
2014/10/28 职场文书
社区党的群众路线教育实践活动总结材料
2014/10/31 职场文书
医院病假条范文
2015/08/17 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
基于Python实现流星雨效果的绘制
2022/03/18 Python