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学习RabbitMQ消息队列
Nov 30 Python
python使用pymysql实现操作mysql
Sep 13 Python
python学习笔记之列表(list)与元组(tuple)详解
Nov 23 Python
python读取图片并修改格式与大小的方法
Jul 24 Python
使用python实现http及ftp服务进行数据传输的方法
Oct 26 Python
提升Python程序性能的7个习惯
Apr 14 Python
python实现统计文本中单词出现的频率详解
May 20 Python
Python语法之精妙的十个知识点(装B语法)
Jan 18 Python
pycharm 关闭search everywhere的解决操作
Jan 15 Python
Python基础之元类详解
Apr 29 Python
python中的None与NULL用法说明
May 25 Python
Python 统计序列中元素的出现频度
Apr 26 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
PyTorch dropout设置训练和测试模式的实现
May 27 #Python
pytorch Dropout过拟合的操作
浅谈pytorch中的dropout的概率p
May 27 #Python
让文件路径提取变得更简单的Python Path库
Pytorch中的数据集划分&正则化方法
Pytorch 如何实现常用正则化
You might like
PHP开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
codeigniter使用技巧批量插入数据实例方法分享
2013/12/31 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
php实现smarty模板无限极分类的方法
2015/12/07 PHP
30个最佳jQuery Lightbox效果插件分享
2011/04/11 Javascript
实现51Map地图接口(示例代码)
2013/11/22 Javascript
PHP中使用微秒计算脚本执行时间例子
2014/11/19 Javascript
jqTransform美化表单
2015/10/10 Javascript
JavaScript禁止用户多次提交的两种方法
2016/07/24 Javascript
原生js封装的一些jquery方法(详解)
2016/09/20 Javascript
基于Phantomjs生成PDF的实现方法
2016/11/07 Javascript
JavaScript中校验银行卡号的实现代码
2016/12/19 Javascript
js编写简单的计时器功能
2017/07/15 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
vue.js 微信支付前端代码分享
2018/02/10 Javascript
p5.js入门教程之小球动画示例代码
2018/03/15 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
2019/05/30 Javascript
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
vue-cli3自动消除console.log()的调试信息方式
2020/10/21 Javascript
vue+iview分页组件的封装
2020/11/17 Vue.js
[01:16]DOTA2小知识课堂 Ep.03 芒果树无伤肉山
2019/12/05 DOTA
给你选择Python语言实现机器学习算法的三大理由
2017/11/15 Python
opencv python统计及绘制直方图的方法
2019/01/21 Python
关于django 1.10 CSRF验证失败的解决方法
2019/08/31 Python
详解python中*号的用法
2019/10/21 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
CSS3动画特效在活动页中的应用
2020/01/21 HTML / CSS
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
高中学生干部学习的自我评价
2014/02/21 职场文书
优秀的导游求职信范文
2014/04/06 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
婚礼上证婚人致辞
2015/07/28 职场文书
学生安全责任协议书
2016/03/22 职场文书
使用Nginx的访问日志统计PV与UV
2022/05/06 Servers