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导出数据到Excel可读取的CSV文件的方法
May 12 Python
Python简明入门教程
Aug 04 Python
Python实现简单多线程任务队列
Feb 27 Python
PyQt 线程类 QThread使用详解
Jul 16 Python
详解python中的线程
Feb 10 Python
利用Python如何将数据写到CSV文件中
Jun 05 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
Dec 24 Python
django的csrf实现过程详解
Jul 26 Python
Python实现socket非阻塞通讯功能示例
Nov 06 Python
python 画函数曲线示例
Dec 04 Python
解决Python3下map函数的显示问题
Dec 04 Python
Pytorch使用shuffle打乱数据的操作
May 20 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
PyTorch dropout设置训练和测试模式的实现
May 27 #Python
pytorch Dropout过拟合的操作
浅谈pytorch中的dropout的概率p
May 27 #Python
让文件路径提取变得更简单的Python Path库
Pytorch中的数据集划分&正则化方法
Pytorch 如何实现常用正则化
You might like
WordPress中用于更新伪静态规则的PHP代码实例讲解
2015/12/18 PHP
PHP输出Excel PHPExcel的方法
2018/07/26 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
node+express+jade制作简单网站指南
2014/11/26 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
html+js+highcharts绘制圆饼图表的简单实例
2016/08/04 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
2017/05/08 Javascript
angular2+node.js express打包部署的实战
2017/07/27 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
2019/06/27 Javascript
微信小程序获取复选框全选反选选中的值(实例代码)
2019/12/17 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
python uuid模块使用实例
2015/04/08 Python
基于使用paramiko执行远程linux主机命令(详解)
2017/10/16 Python
python素数筛选法浅析
2018/03/19 Python
Python实现针对给定字符串寻找最长非重复子串的方法
2018/04/21 Python
分享一下Python数据分析常用的8款工具
2018/04/29 Python
解决python中使用plot画图,图不显示的问题
2018/07/04 Python
Python3.6简单的操作Mysql数据库的三个实例
2018/10/17 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
pip安装python库的方法总结
2019/08/02 Python
安装2019Pycharm最新版本的教程详解
2019/10/22 Python
基于CSS3实现的几个小loading效果
2018/09/27 HTML / CSS
Qoo10台湾站:亚洲领先的在线市场
2018/05/15 全球购物
AMAVII眼镜官网:时尚和设计师太阳镜
2019/05/05 全球购物
安踏官方商城:anta.cn
2019/12/16 全球购物
年终自我鉴定
2013/10/09 职场文书
人力资源行政经理自我评价
2013/10/23 职场文书
设计师个人求职信范文
2014/02/02 职场文书
解除劳动合同协议书范本2014
2014/09/25 职场文书
2014年电信员工工作总结
2014/12/19 职场文书
绵山导游词
2015/02/05 职场文书