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进阶教程之函数参数的多种传递方法
Aug 30 Python
Python多线程编程(四):使用Lock互斥锁
Apr 05 Python
列举Python中吸引人的一些特性
Apr 09 Python
使用Python的Treq on Twisted来进行HTTP压力测试
Apr 16 Python
Python实现二分查找算法实例
May 26 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
May 21 Python
python3将视频流保存为本地视频文件
Jun 20 Python
python简易实现任意位数的水仙花实例
Nov 13 Python
Django项目使用CircleCI的方法示例
Jul 14 Python
Django框架 信号调度原理解析
Sep 04 Python
解析python 中/ 和 % 和 //(地板除)
Jun 28 Python
解决python存数据库速度太慢的问题
Apr 23 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
PyTorch dropout设置训练和测试模式的实现
May 27 #Python
pytorch Dropout过拟合的操作
浅谈pytorch中的dropout的概率p
May 27 #Python
让文件路径提取变得更简单的Python Path库
Pytorch中的数据集划分&正则化方法
Pytorch 如何实现常用正则化
You might like
福利彩票幸运号码自动生成器
2006/10/09 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
2012/05/06 PHP
php生成rss类用法实例
2015/04/14 PHP
基于PHP技术开发客服工单系统
2016/01/06 PHP
PHP弱类型的安全问题详细总结
2016/09/25 PHP
php实用代码片段整理
2016/11/12 PHP
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
2013/05/17 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
2015/03/03 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
浅谈JS中String()与 .toString()的区别
2016/10/20 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
微信小程序 仿猫眼实现实例代码
2017/03/14 Javascript
解析Angular 2+ 样式绑定方式
2018/01/15 Javascript
AngularJS创建一个上传照片的指令实例代码
2018/02/24 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
2020/09/04 Javascript
[01:36:19]Secret vs NB 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python获取运行目录与当前脚本目录的方法
2015/06/01 Python
深入理解 Python 中的多线程 新手必看
2016/11/20 Python
用Python编写一个高效的端口扫描器的方法
2018/12/20 Python
Python最小二乘法矩阵
2019/01/02 Python
python django框架中使用FastDFS分布式文件系统的安装方法
2019/06/10 Python
pycharm访问mysql数据库的方法步骤
2019/06/18 Python
Python SQLAlchemy入门教程(基本用法)
2019/11/11 Python
英国领先的高街书籍专家:Waterstones
2018/02/01 全球购物
什么叫做SQL注入,如何防止
2016/10/04 面试题
个人自我鉴定写法
2013/11/30 职场文书
银行学习十八大感想
2014/01/11 职场文书
综合实践教学反思
2014/01/31 职场文书
会计求职信范文
2014/05/24 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
单位实习鉴定评语
2015/01/04 职场文书