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的自动化部署模块Fabric的安装及使用指南
Jan 19 Python
python的random模块及加权随机算法的python实现方法
Jan 04 Python
解决uWSGI的编码问题详解
Mar 24 Python
关于Python正则表达式 findall函数问题详解
Mar 22 Python
python+pandas分析nginx日志的实例
Apr 28 Python
python3利用ctypes传入一个字符串类型的列表方法
Feb 12 Python
python操作kafka实践的示例代码
Jun 19 Python
python3中sorted函数里cmp参数改变详解
Mar 12 Python
python利用Excel读取和存储测试数据完成接口自动化教程
Apr 30 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
May 22 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
Mar 04 Python
Python读取文件夹下的所有文件实例代码
Apr 02 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
PyTorch dropout设置训练和测试模式的实现
May 27 #Python
pytorch Dropout过拟合的操作
浅谈pytorch中的dropout的概率p
May 27 #Python
让文件路径提取变得更简单的Python Path库
Pytorch中的数据集划分&正则化方法
Pytorch 如何实现常用正则化
You might like
建立动态的WML站点(一)
2006/10/09 PHP
PHP判断变量是否为0的方法
2014/02/08 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
2014/06/23 PHP
如何解决PHP获取不到SESSION信息之一般情况
2019/10/10 PHP
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
将中国标准时间转换成标准格式的代码
2014/03/20 Javascript
Javascript中的apply()方法浅析
2015/03/15 Javascript
javascript跨域请求包装函数与用法示例
2016/11/03 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
在bootstrap中实现轮播图实例代码
2017/06/11 Javascript
JavaScript输入框字数实时统计更新
2017/06/17 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
2017/06/28 Javascript
js 提取某()特殊字符串长度的实例
2017/12/06 Javascript
python BeautifulSoup使用方法详解
2013/11/21 Python
python获取局域网占带宽最大3个ip的方法
2015/07/09 Python
python编程开发之类型转换convert实例分析
2015/11/13 Python
python套接字流重定向实例汇总
2016/03/03 Python
python 实现tar文件压缩解压的实例详解
2017/08/20 Python
python查询mysql,返回json的实例
2018/03/26 Python
TensorFlow实现卷积神经网络
2018/05/24 Python
tensorflow 加载部分变量的实例讲解
2018/07/27 Python
详解Appium+Python之生成html测试报告
2019/01/04 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
2019/08/15 Python
使用jquery实现HTML5响应式导航菜单教程
2014/04/02 HTML / CSS
九州传奇上机题
2014/07/10 面试题
监理员的岗位职责
2013/11/13 职场文书
体育教育专业自荐信范文
2013/12/20 职场文书
食堂个人先进事迹
2014/01/22 职场文书
网上开店必备创业计划书
2014/01/26 职场文书
客服专员岗位职责
2014/02/28 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
小学学校门卫岗位职责
2014/08/03 职场文书
项目申请汇报材料
2014/08/16 职场文书
群众路线剖析材料怎么写
2014/10/09 职场文书
关于使用Redisson订阅数问题
2022/01/18 Redis
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电