如何将SVM、LR、RF对应的三个混淆矩阵并排绘制?
实现SVM、LR、RF混淆矩阵并排展示
要把三个混淆矩阵并排展示,直接用matplotlib的子图布局功能即可,核心是通过plt.subplots创建统一的画布和子图,将每个混淆矩阵的热图绘制到对应子图上。同时注意修正原代码中LR模型的数据源错误(原代码里误将RF的矩阵当作LR的数据源)。
修改后的完整代码如下:
import seaborn as sn import pandas as pd import matplotlib.pyplot as plt # 准备三个模型的混淆矩阵数据 svm_A = [[11,1], [2,2]] rf_A = [[12,0], [3,1]] lr_A = [[11,1], [2,2]] # 创建1行3列的子图布局,设置整体画布尺寸 fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(18, 6)) # 绘制SVM混淆矩阵 df_svm = pd.DataFrame(svm_A, index=["0", "1"], columns=["0", "1"]) sn.heatmap(df_svm, annot=True, ax=axes[0]) axes[0].set_title("SVM 混淆矩阵") # 绘制RF混淆矩阵 df_rf = pd.DataFrame(rf_A, index=["0", "1"], columns=["0", "1"]) sn.heatmap(df_rf, annot=True, ax=axes[1]) axes[1].set_title("RF 混淆矩阵") # 绘制LR混淆矩阵(修正原代码的数据源错误) df_lr = pd.DataFrame(lr_A, index=["0", "1"], columns=["0", "1"]) sn.heatmap(df_lr, annot=True, ax=axes[2]) axes[2].set_title("LR 混淆矩阵") # 调整子图间距,避免标题和热图重叠 plt.tight_layout() plt.show()
关键说明:
plt.subplots(nrows=1, ncols=3):创建1行3列的子图框架,axes是包含三个子图对象的列表,分别对应左、中、右三个位置ax=axes[i]:指定每个heatmap绘制到对应的子图上plt.tight_layout():自动调整子图间距,解决标题、坐标轴标签重叠的问题- 修正了原代码中LR模型的数据源错误,确保使用
lr_A而非rf_A
内容的提问来源于stack exchange,提问作者ARWA ABDULKADER BASHANFAR
相关产品推荐
相关产品推荐

