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统计日志ip访问数的方法
Jul 06 Python
Python引用传值概念与用法实例小结
Oct 07 Python
分析Python读取文件时的路径问题
Feb 11 Python
pandas表连接 索引上的合并方法
Jun 08 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
Jan 08 Python
Python 调用PIL库失败的解决方法
Jan 08 Python
python基于paramiko将文件上传到服务器代码实现
Jul 08 Python
利用python在大量数据文件下删除某一行的例子
Aug 21 Python
pytorch 中的重要模块化接口nn.Module的使用
Apr 02 Python
浅析python 字典嵌套
Sep 29 Python
Python带你从浅入深探究Tuple(基础篇)
May 15 Python
基于Python编写简易版的天天跑酷游戏的示例代码
Mar 23 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
PyTorch dropout设置训练和测试模式的实现
May 27 #Python
pytorch Dropout过拟合的操作
浅谈pytorch中的dropout的概率p
May 27 #Python
让文件路径提取变得更简单的Python Path库
Pytorch中的数据集划分&正则化方法
Pytorch 如何实现常用正则化
You might like
php中定义网站根目录的常用方法
2010/08/08 PHP
用php制作简单分页(从数据库读取记录)的方法详解
2013/05/04 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
laravel实现查询最后执行的一条sql语句的方法
2019/10/09 PHP
几个高效,简洁的字符处理函数
2007/04/12 Javascript
jQuery选择头像并实时显示的代码
2010/06/27 Javascript
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
JS获取整个页面文档的实现代码
2011/12/15 Javascript
jquery异步跨域访问代码
2013/06/28 Javascript
js加载读取内容及显示与隐藏div示例
2014/02/13 Javascript
JS使用eval()动态创建变量的方法
2016/06/03 Javascript
JavaScript九九乘法口诀表的简单实现
2016/10/04 Javascript
浅述Javascript的外部对象
2016/12/07 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
nodejs爬虫初试superagent和cheerio
2018/03/05 NodeJs
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
对layui中的onevent 和event的使用详解
2019/09/06 Javascript
如何基于viewport vm适配移动端页面
2020/11/13 Javascript
mac系统安装Python3初体验
2018/01/02 Python
Python安装模块的常见问题及解决方法
2018/02/05 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
python内置数据类型之列表操作
2018/11/12 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
python科学计算之narray对象用法
2019/11/25 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
优秀毕业生求职信范文
2014/01/02 职场文书
大学生职业生涯规划书范文
2014/01/04 职场文书
办理退休介绍信
2014/01/09 职场文书
2014年党课学习材料
2014/05/11 职场文书
食品科学与工程专业毕业生求职信范文
2014/07/21 职场文书
2015年工商所工作总结
2015/05/21 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书
职场干货:简历中的自我评价应该这样写!
2019/05/06 职场文书
解决pytorch-gpu 安装失败的记录
2021/05/24 Python
简单聊聊Vue中的计算属性和属性侦听
2021/10/05 Vue.js