Python Matplotlib实现混淆矩阵可视化与规范化
需积分: 5 178 浏览量
更新于2024-08-03
收藏 2KB TXT 举报
在Python编程中,混淆矩阵是一种重要的评估模型性能的工具,尤其是在分类问题中,如机器学习中的二分类或多分类任务。混淆矩阵展示了真实类别(实际标签)与预测类别(预测标签)之间的对比,有助于理解模型在不同类别上的表现,比如精确度、召回率和F1分数等。本文主要介绍如何使用matplotlib库在Python中绘制混淆矩阵。
首先,导入必要的库,包括matplotlib和numpy,因为混淆矩阵通常基于numpy数组计算:
```python
import matplotlib.pyplot as plt
import numpy as np
```
函数`plot_Matrix`是核心部分,它接受四个参数:混淆矩阵`cm`、类别标签`classes`、图片标题`title`和颜色映射`cmap`。这个函数的主要步骤包括:
1. **标准化混淆矩阵**:由于混淆矩阵通常是按行进行归一化,即将每一行的总和设为1,这样可以更好地展示每个类别的相对性能。这里通过将矩阵元素除以各自行的和来实现。
2. **字符串格式化**:将归一化的混淆矩阵转换为字符串列表,便于后续打印和可视化。
3. **处理小数精度**:对于占比小于1%的单元格,设置为0,这有助于在颜色映射中避免过于精细的区分。
4. **创建图像**:使用`plt.subplots()`创建一个新的图形,并使用`imshow()`函数绘制混淆矩阵,指定颜色映射`cmap`和插值方法。
5. **设置坐标轴标签**:设置x轴和y轴的标签,分别为预测类别和实际类别,以及图片的标题。
6. **添加网格线**:使用`grid()`函数添加网格线,同时调整网格线的样式、颜色和宽度。对次要刻度线进行调整,使它们不显示标签,仅用于视觉分隔。
7. **旋转标签**:为了清晰地显示长标签,将x轴的标签旋转45度。
示例代码如下:
```python
def plot_Matrix(cm, classes, title=None, cmap=plt.cm.Blues):
# ...(上述步骤)
for i in range(cm.shape[0]):
for j in range(cm.shape[1]):
if int(cm[i, j] * 100 + 0.5) == 0:
cm[i, j] = 0
fig, ax = plt.subplots()
im = ax.imshow(cm, interpolation='nearest', cmap=cmap)
# ...(继续设置其他属性)
plt.show()
# 使用示例
# 假设你已经有了混淆矩阵cm和类别列表classes
cm = ... # 混淆矩阵数值
classes = ... # 类别标签
plot_Matrix(cm, classes, 'Confusion Matrix Example', cmap=plt.cm.Blues)
```
通过这个函数,你可以快速生成一个具有美观颜色映射和清晰标签的混淆矩阵图,这对于理解和分析模型性能非常有帮助。此外,如果你需要在不同的项目或场景中重复使用这个功能,可以将其封装成一个类或者模块,方便重用和定制。
121 浏览量
2021-10-04 上传
2023-05-12 上传
2023-04-26 上传
2023-03-28 上传
2023-10-02 上传
2023-07-13 上传
2023-05-04 上传
2023-09-12 上传
chuxuezhe_987
- 粉丝: 206
- 资源: 147
最新资源
- MATLAB实现小波阈值去噪:Visushrink硬软算法对比
- 易语言实现画板图像缩放功能教程
- 大模型推荐系统: 优化算法与模型压缩技术
- Stancy: 静态文件驱动的简单RESTful API与前端框架集成
- 掌握Java全文搜索:深入Apache Lucene开源系统
- 19计应19田超的Python7-1试题整理
- 易语言实现多线程网络时间同步源码解析
- 人工智能大模型学习与实践指南
- 掌握Markdown:从基础到高级技巧解析
- JS-PizzaStore: JS应用程序模拟披萨递送服务
- CAMV开源XML编辑器:编辑、验证、设计及架构工具集
- 医学免疫学情景化自动生成考题系统
- 易语言实现多语言界面编程教程
- MATLAB实现16种回归算法在数据挖掘中的应用
- ***内容构建指南:深入HTML与LaTeX
- Python实现维基百科“历史上的今天”数据抓取教程