You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于multi-index value_counts绘制混淆矩阵热力图

混淆矩阵热力图实现方案

步骤1:将多索引计数结果转为二维矩阵

df.value_counts()返回的是多级索引的一维Series,无法直接传入热力图接口,调用unstack()即可将其转换为行对应result、列对应predict的二维混淆矩阵:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 转换为二维矩阵
confusion_mat = df[["result", "predict"]].value_counts().unstack()
# 可选:手动固定行列顺序,避免布尔值排序不符合预期
confusion_mat = confusion_mat.reindex(index=[True, False], columns=[True, False])

转换后矩阵结构和给出的计数完全对应:

predict=Truepredict=False
result=True886995
result=False3528

步骤2:调用seaborn绘制热力图

使用seaborn.heatmap接口,开启单元格数值标注即可完成绘制:

plt.figure(figsize=(6, 5))
sns.heatmap(
    confusion_mat,
    annot=True,        # 显示单元格内的计数值
    fmt="d",           # 指定数值格式为整数
    cmap="Blues",      # 指定配色
    cbar=False         # 可选:隐藏右侧色条,二分类混淆矩阵可以不需要
)
plt.xlabel("预测列 predict")
plt.ylabel("真实列 result")
plt.title("预测结果混淆矩阵")
plt.show()

可选替代方案

如果不需要复用value_counts()的结果,也可以直接从原始两列数据生成矩阵,不需要手动做计数统计:

from sklearn.metrics import confusion_matrix

# 直接生成混淆矩阵,labels参数指定标签顺序
confusion_mat = confusion_matrix(
    y_true=df["result"],
    y_pred=df["predict"],
    labels=[True, False]
)
# 后续绘图代码和上述流程完全一致

内容的提问来源于stack exchange,提问作者David Davó

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 19:24:25