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中numpy基础学习及进行数组和矢量计算
Feb 12 Python
Python实现按特定格式对文件进行读写的方法示例
Nov 30 Python
Python语言描述机器学习之Logistic回归算法
Dec 21 Python
Python实现读取字符串按列分配后按行输出示例
Apr 17 Python
解决python3 json数据包含中文的读写问题
May 10 Python
pytorch + visdom CNN处理自建图片数据集的方法
Jun 04 Python
Django REST framework视图的用法
Jan 16 Python
余弦相似性计算及python代码实现过程解析
Sep 18 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
在python中logger setlevel没有生效的解决
Feb 21 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
Mar 30 Python
Python标准库之typing的用法(类型标注)
Jun 02 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
PyTorch dropout设置训练和测试模式的实现
May 27 #Python
pytorch Dropout过拟合的操作
浅谈pytorch中的dropout的概率p
May 27 #Python
让文件路径提取变得更简单的Python Path库
Pytorch中的数据集划分&正则化方法
Pytorch 如何实现常用正则化
You might like
一段防盗连的PHP代码
2006/12/06 PHP
php笔记之:初探PHPcms模块开发介绍
2013/04/26 PHP
php引用返回与取消引用的详解
2013/06/08 PHP
PHP二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
php实现三级级联下拉框
2016/04/17 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
jquery常用特效方法使用示例
2014/04/25 Javascript
js 获取浏览器版本以此来调整CSS的样式
2014/06/03 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
javascript的BOM
2016/05/03 Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
2016/05/20 Javascript
全面了解JS中的匿名函数
2016/06/29 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
js实现图片懒加载效果
2017/07/17 Javascript
vue弹窗插件实战代码
2018/09/08 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
[01:07:17]EG vs Optic Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
[47:04]EG vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
详解python开发环境搭建
2016/12/16 Python
利用Python写一个爬妹子的爬虫
2018/06/08 Python
Python切图九宫格的实现方法
2019/10/10 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
2020/02/26 Python
numpy中生成随机数的几种常用函数(小结)
2020/08/18 Python
python获取命令行参数实例方法讲解
2020/11/02 Python
Pycharm安装Qt Design快捷工具的详细教程
2020/11/18 Python
如何设置Java的运行环境
2013/04/05 面试题
中科软笔试题和面试题
2014/10/07 面试题
国际金融专业自荐信
2014/07/05 职场文书
十佳青年事迹材料
2014/08/21 职场文书
借款协议书
2014/09/16 职场文书
Css预编语言及区别详解
2021/04/25 HTML / CSS
python关于集合的知识案例详解
2021/05/30 Python