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

如何将自定义列表数据转换为Seaborn热力图(混淆矩阵样式)

如何将自定义嵌套列表转换为混淆矩阵热力图?

你的数据是[真实标签, 预测标签, 得分]的三元组列表,要转换成seaborn热力图所需的矩阵结构,按以下步骤操作:

1. 提取唯一标签,确定矩阵维度

从列表中提取所有真实标签和预测标签,去重后作为矩阵的行/列类别:

my_list = [
    ['scoreA', 'scoreA', None],['scoreA', 'scoreB', 0.5], ['scoreA', 'scoreC', 0.4],
    ['scoreB', 'scoreB', None],['scoreB', 'scoreA', 0.5], ['scoreB', 'scoreC', 0.9]
]

# 提取并排序所有唯一标签
labels = sorted({item[0] for item in my_list} | {item[1] for item in my_list})
n = len(labels)

2. 构建并填充混淆矩阵

创建空矩阵,遍历列表将得分填入对应位置(None可按需替换为指定值,示例用0):

import numpy as np

# 初始化n×n的零矩阵
confusion_matrix = np.zeros((n, n))

# 填充数据
for true_label, pred_label, score in my_list:
    true_idx = labels.index(true_label)
    pred_idx = labels.index(pred_label)
    confusion_matrix[true_idx][pred_idx] = score if score is not None else 0

3. 绘制Seaborn热力图

将矩阵转为带行列标签的DataFrame,再调用热力图函数:

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

df = pd.DataFrame(confusion_matrix, index=labels, columns=labels)

plt.figure(figsize=(8, 6))
sns.heatmap(df, annot=True, cmap='Blues', fmt='.1f')
plt.xlabel('预测标签')
plt.ylabel('真实标签')
plt.title('混淆矩阵热力图')
plt.show()

调整cmap(配色)、fmt(标注格式)或None的替换值,可匹配你的可视化需求。

内容的提问来源于stack exchange,提问作者user8793002

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:57:12