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中__call__用法实例
Aug 29 Python
对Python新手编程过程中如何规避一些常见问题的建议
Apr 01 Python
Python双精度浮点数运算并分行显示操作示例
Jul 21 Python
Python中使用多进程来实现并行处理的方法小结
Aug 09 Python
python 读取Linux服务器上的文件方法
Dec 27 Python
python使用xlrd模块读取xlsx文件中的ip方法
Jan 11 Python
Django中多种重定向方法使用详解
Jul 17 Python
Python3标准库glob文件名模式匹配的问题
Mar 13 Python
关于tf.matmul() 和tf.multiply() 的区别说明
Jun 18 Python
使用Python项目生成所有依赖包的清单方式
Jul 13 Python
python使用scapy模块实现ping扫描的过程详解
Jan 21 Python
python turtle绘图
May 04 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
PyTorch dropout设置训练和测试模式的实现
May 27 #Python
pytorch Dropout过拟合的操作
浅谈pytorch中的dropout的概率p
May 27 #Python
让文件路径提取变得更简单的Python Path库
Pytorch中的数据集划分&正则化方法
Pytorch 如何实现常用正则化
You might like
在PHP中利用XML技术构造远程服务(下)
2006/10/09 PHP
PHP数组无限分级数据的层级化处理代码
2012/12/29 PHP
探讨Hessian在PHP中的使用分析
2013/06/13 PHP
html静态页面调用php文件的方法
2014/11/13 PHP
解析WordPress中的post_class与get_post_class函数
2016/01/04 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
PHP大文件分片上传的实现方法
2018/10/28 PHP
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
php跨域调用json的例子
2013/11/13 Javascript
使用apply方法实现javascript中的对象继承
2013/12/16 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
2015/01/09 Javascript
EasyUI中实现form表单提交的示例分享
2015/03/01 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
2015/04/14 Javascript
JavaScript版经典游戏之扫雷游戏完整示例【附demo源码下载】
2016/12/12 Javascript
简单的渐变轮播插件
2017/01/12 Javascript
javascript作用域链与执行环境详解
2017/03/25 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
vue与bootstrap实现时间选择器的示例代码
2017/08/26 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
vue数据传递--我有特殊的实现技巧
2018/03/20 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
[01:28]2014DOTA2国际邀请赛中国区预选赛四大豪门直升机抵达会场
2014/05/24 DOTA
python冒泡排序简单实现方法
2015/07/09 Python
星球大战与Python之间的那些事
2016/01/07 Python
python使用pandas实现数据分割实例代码
2018/01/25 Python
Python实现名片管理系统
2020/02/14 Python
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
工商企业管理应届生求职信
2013/11/03 职场文书
求职简历中个人的自我评价
2013/12/01 职场文书
产品质量承诺范本
2014/03/31 职场文书
物流专业自荐信
2014/05/23 职场文书
植树节口号
2014/06/21 职场文书
导游词欢迎词
2015/02/02 职场文书