如何修改Seaborn混淆矩阵配色并添加真阳性等分类标签
Seaborn实现自定义混淆矩阵的方案
完全可以在Seaborn中实现你需要的效果,你只需要自定义颜色映射、自定义每个单元格的注释内容即可,完整可运行代码如下:
import numpy as np import seaborn as sns import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap # 你的混淆矩阵 cm = np.array([[2547,288],[ 255,216]]) # 自定义每个单元格的标注,顺序对应:TP、FN、FP、TN annot_labels = [ [f"True Positive\n{cm[0,0]}", f"False Negative\n{cm[0,1]}"], [f"False Positive\n{cm[1,0]}", f"True Negative\n{cm[1,1]}"] ] # 颜色映射:分类正确为绿色,错误为红色,顺序对应:错误色、正确色 cmap = ListedColormap(['#ff9999', '#99ff99']) # 构造颜色指示矩阵:正确的位置为1,错误的为0 color_mask = np.array([ [1, 0], [0, 1] ]) fig, ax = plt.subplots(figsize=(12, 8)) # 绘制热力图,用color_mask控制颜色,传入自定义的标注数组 ax = sns.heatmap(color_mask, annot=annot_labels, cmap=cmap, fmt='', cbar=False) ax.set_title('Seaborn Confusion Matrix with labels\n\n') ax.set_xlabel('\nPredicted Values') ax.set_ylabel('Actual Values ') # 保留原有的坐标轴标签 ax.xaxis.set_ticklabels(['True','False']) ax.yaxis.set_ticklabels(['True','False']) plt.show()
代码说明
- 我们构造了和混淆矩阵同尺寸的
annot_labels数组,每个位置存储了对应分类名称和数值,作为热力图的自定义注释 - 使用
ListedColormap自定义只有红绿两种颜色的配色方案,color_mask矩阵用来标记每个位置属于正确分类还是错误分类,匹配对应颜色 - 关闭了不需要的颜色条(
cbar=False),和示例效果保持一致
运行上述代码即可得到和你需求完全一致的混淆矩阵效果。
内容的提问来源于stack exchange,提问作者Test
相关产品推荐
相关产品推荐

