Matplotlib绘制混淆矩阵的实现
更新时间:2021年05月27日 15:06:52 作者:Apple-yeran
对于机器学习多分类模型来说,其评价指标除了精度之外,常用的还有混淆矩阵和分类报告,下面来展示一下如何绘制混淆矩阵,这在论文中经常会用到。感兴趣的可以了解一下
对于机器学习多分类模型来说,其评价指标除了精度之外,常用的还有混淆矩阵和分类报告,下面来展示一下如何绘制混淆矩阵,这在论文中经常会用到。
代码如下:
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')
效果:
第二种情况:显示数字
plot_confusion_matrix(cnf_matrix, classes=attack_types, normalize=False, title='Normalized confusion matrix')
效果:
到此这篇关于Matplotlib绘制混淆矩阵的实现的文章就介绍到这了,更多相关Matplotlib 混淆矩阵内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- 利用python中的matplotlib打印混淆矩阵实例
- Python使用matplotlib绘制正弦和余弦曲线的方法示例
- Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
- matplotlib 曲线图 和 折线图 plt.plot()实例
- Python matplotlib 绘制双Y轴曲线图的示例代码
- 使用matplotlib动态刷新指定曲线实例
- Python使用matplotlib绘制三维参数曲线操作示例
- Python使用matplotlib绘制Logistic曲线操作示例
- Python matplotlib画曲线例题解析
- matplotlib画混淆矩阵与正确率曲线的实例代码
相关文章
-
今天给大家带来的是关于Python的相关知识,文章围绕着Python注释的用法展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下2021-06-06
-
Base64 就是一种基于64个可打印字符来表示二进制数据的方法,这篇文章主要介绍了Python Base64编码和解码,需要的朋友可以参考下2022-12-12
-
这篇文章主要介绍了Python中类型关系和继承关系,较为详细的分析了Python中类型关系和继承关系的原理与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下2015-05-05
-
最近搞安装ssl模块每天都弄到很晚,所以这里给大家整理下,这篇文章主要给大家介绍了关于python3.10及以上版本编译安装ssl模块的详细过程,文中介绍的非常详细,需要的朋友可以参考下2023-05-05
-
这篇文章主要介绍了python logging.info在终端没输出的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-05-05
-
这篇文章主要介绍了python方向键控制上下左右代码,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下2018-01-01
-
这篇文章主要介绍了python中getopt()函数用法,通过getopt模块中的getopt( )方法,我们可以获取和解析命令行传入的参数,需要的朋友可以参考下2022-12-12
-
这篇文章主要为大家详细介绍了python3.6+selenium实现操作Frame中的页面元素,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2019-07-07
-
这篇文章主要介绍了Python的列表和列表算法,具有一定参考价值,需要的朋友可以了解下,希望能给你带来帮助2021-08-08
-
这篇文章主要为大家详细介绍了如何利用Python中的python-docx非标准库实现word文档样式批量处理,文中示例代码讲解详细,感兴趣的可以了解一下2022-05-05
最新评论