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清理子进程机制剖析
Nov 23 Python
详解Django的CSRF认证实现
Oct 09 Python
对numpy中向量式三目运算符详解
Oct 31 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
Feb 01 Python
python OpenCV GrabCut使用实例解析
Nov 11 Python
Python中remove漏删和索引越界问题的解决
Mar 18 Python
python如何判断IP地址合法性
Apr 05 Python
python+selenium+chromedriver实现爬虫示例代码
Apr 10 Python
解决pycharm中的run和debug失效无法点击运行
Jun 09 Python
python模块如何查看
Jun 16 Python
基于python实现简单C/S模式代码实例
Sep 14 Python
Python中lru_cache的使用和实现详解
Jan 25 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
PyTorch dropout设置训练和测试模式的实现
May 27 #Python
pytorch Dropout过拟合的操作
浅谈pytorch中的dropout的概率p
May 27 #Python
让文件路径提取变得更简单的Python Path库
Pytorch中的数据集划分&正则化方法
Pytorch 如何实现常用正则化
You might like
php格式化日期和时间格式化示例分享
2014/02/24 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
7个JS基础知识总结
2014/03/05 Javascript
nodejs开发环境配置与使用
2014/11/17 NodeJs
javascript表单验证大全
2015/08/12 Javascript
JavaScript对象创建模式实例汇总
2016/10/03 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
js实现九宫格拼图小游戏
2017/02/13 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
详解angularjs 关于ui-router分层使用
2017/06/12 Javascript
webpack学习教程之publicPath路径问题详解
2017/06/17 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
关于react中组件通信的几种方式详解
2017/12/10 Javascript
js实现敏感词过滤算法及实现逻辑
2018/07/24 Javascript
浅谈Vue 性能优化之深挖数组
2018/12/11 Javascript
nuxt框架中对vuex进行模块化设置的实现方法
2019/09/06 Javascript
记一次react前端项目打包优化的方法
2020/03/30 Javascript
angular组件间通讯的实现方法示例
2020/05/07 Javascript
js校验开始时间和结束时间
2020/05/26 Javascript
解决vue里a标签值解析变量,跳转页面,前面加默认域名端口的问题
2020/07/22 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
[44:37]完美世界DOTA2联赛PWL S3 Forest vs access 第一场 12.11
2020/12/13 DOTA
简单易懂的python环境安装教程
2017/07/13 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
2019/08/05 Python
python的faker库用法
2019/11/28 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
办公室主任主任岗位责任制
2014/02/11 职场文书
新年寄语大全
2014/04/12 职场文书
鼓舞士气的口号
2014/06/16 职场文书
2014年体育教师工作总结
2014/12/03 职场文书
2014年小学安全工作总结
2014/12/04 职场文书
个园导游词
2015/02/04 职场文书
跑出一片天观后感
2015/06/08 职场文书