如何用 ggplot2 可视化混淆矩阵
数据分析 混淆矩阵是评估分类模型性能的重要工具。 在这篇文章中,我们将使用 R 的 ggplot2 套餐如下图所示,将混淆矩阵可视化,以及如何将混淆矩阵中的每个元素可视化,使其更容易理解。

用 ggplot2 可视化混淆矩阵

首先是 ggplot2是 R 中最受欢迎的可视化库之一。它提供了一种直观的方法来表示混淆矩阵。下面的代码以数据帧的形式创建了一个混淆矩阵,并将其绘制成一个 ggplot2来逐步实现混淆矩阵的可视化。
1. 加载所需的库
要将混淆矩阵可视化,我们首先需要加载 ggplot2 库。ggplot2 是 R 中许多可视化工具的必备工具,也是创建直观、时尚图表的强大工具。
加载 # 先决条件库
library(ggplot2)2. 生成混淆矩阵数据
代表混淆矩阵的数据存储在 数据框来创建混淆矩阵。设置预测值和真实值,并为混淆矩阵中的每个条目添加标签(TP、FP、FN、TN)。
创建表示 # 混淆矩阵的数据帧
confusion_data <- data.frame(
Predicted = factor(c("Y", "Y", "N", "N"), levels = c("N", "Y")), # Predicted:设置 N 和 Y 水平(N 在下)。
实际 = factor(c("Y", "N", "Y", "N"), levels = c("Y", "N")), # 实际:设置 Y 和 N 的水平(Y 在左侧)
标签 = c("真阳性 (TP)"、"假阳性 (FP)"、"假阴性 (FN)"、"真阴性 (TN)") # 每个项目的标签
)代码 描述:
- 预测 列是模型预测的值。这里的
Y和N其中 Y 为正数,N 为负数。 - 实际 列是实际值,而
Y和N以使用 - 标签是混淆矩阵中每个条目对应的标签,分别表示 TP(真阳性)、FP(假阳性)、FN(假阴性)、TN(真阴性)。
3. 用 ggplot2 可视化混淆矩阵
现在,让我们使用 ggplot2 将混淆矩阵可视化。 geom_铺瓦片()将每个项目表示为一块瓷砖,并为每块瓷砖添加文本标签(TP、FP、FN、TN)。
# 使用 ggplot2 直观显示混淆矩阵
ggplot(confusion_data, aes(x = 实际数据,y = 预测数据)) +
geom_tile(fill = "lightblue", color = "black", width = 1, height = 1) + # 创建磁贴,设置颜色和边框
geom_text(aes(label = 标签), size = 5) + # 为磁贴添加文本标签
labs(title = "混淆矩阵", subtitle = "实际(参考)") + # 添加标题和副标题
scale_x_discrete(position = "top") + # 将 X 轴标签置于顶部
theme_minimal() + # 设置极简主题
主题(
plot.title = element_text(hjust = 0.5, size = 16, face = "bold", margin = margin(b = 10)), # 设置标题
plot.subtitle = element_text(hjust = 0.5, size = 12, face = "bold", margin = margin(b = 20)), # 设置副标题
axis.title.x = element_blank(), # 移除 x 轴标题
axis.title.y = element_text(size = 12, face = "bold", margin = margin(r = 20)), # 设置 Y 轴标题
axis.text.x = element_text(size = 12, face = "bold", margin = margin(b = 10)), # 设置 x 轴标签
axis.text.y = element_text(size = 12, face = "bold"), # 设置 Y 轴标签
panel.grid = element_blank(),# 删除网格
axis.ticks = element_blank(), # 移除轴刻度线
plot.margin = margin(t = 50, b = 40) # 设置 margin
)代码 描述:
- geom_tile()将混淆矩阵中的每个条目绘制成一个图块。瓦片的颜色设为浅蓝色,边框设为黑色。
- geom_text()显示混淆矩阵的标签(TP、FP、FN、TN)。
- 实验室()标题和副标题:设置标题和副标题。在副标题中添加 "实际(参考)",表示实际值是参考数据。
- theme_minimal()将背景设为白色,并删除不必要的元素以简化图表。
4. 将结果可视化并设置图表样式
混淆矩阵的可视化效果与文章开头的效果类似。以平铺格式显示的每个条目都有一个 真正的积极, 假阳性, 假阴性, 真阴性以帮助您理解混淆矩阵的含义。
最终完整代码
加载 # 先决条件库
library(ggplot2)
创建表示 # 混淆矩阵的数据框
confusion_data <- data.frame(
Predicted = factor(c("Y", "Y", "N", "N"), levels = c("N", "Y")), # predicted: set N and Y levels (N is below)
实际 = factor(c("Y", "N", "Y", "N"), levels = c("Y", "N")), # 实际:设置 Y 和 N 的水平(Y 在上)
标签 = c("真阳性 (TP)"、"假阳性 (FP)"、"假阴性 (FN)"、"真阴性 (TN)") # 每个项目的标签
)
# 使用 ggplot2 直观显示混淆矩阵
ggplot(confusion_data, aes(x = 实际数据,y = 预测数据)) +
geom_tile(fill = "lightblue", color = "black", width = 1, height = 1) +
geom_text(aes(label = 标签), size = 5) +
labs(title = "Confusion Matrix", subtitle = "Actual (Reference)") +
scale_x_discrete(position = "top") +
theme_minimal() +
主题(
plot.title = element_text(hjust = 0.5, size = 16, face = "bold", margin = margin(b = 10))、
plot.subtitle = element_text(hjust = 0.5, size = 12, face = "bold", margin = margin(b = 20))、
axis.title.x = element_blank()、
axis.title.y = element_text(size = 12,face = "黑体",margin = margin(r = 20))、
axis.text.x = element_text(size = 12, face = "bold", margin = margin(b = 10))、
axis.text.y = element_text(size = 12, face = "bold")、
panel.grid = element_blank()、
axis.ticks = element_blank()、
plot.margin = margin(t = 50, b = 40)
)总结
在本帖中,我们将使用 R 的 ggplot2 创建一个 混淆矩阵 您已经学会了如何将其可视化。混淆矩阵是评估分类模型性能的重要工具,通过直观地表示每个条目的含义(TP、FP、FN、TN),可以轻松了解模型的准确性。这种方法使混淆矩阵的分析更加直观,而且可以应用于各种数据!
要理解混淆矩阵在实践中的意义,我们需要使用 R 数据分析示例:利用 Iris 虹膜数据集学习分类和可视化 查看帖子。您就会明白我们所说的检查模型性能是什么意思,包括准确性、召回率等。






