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

如何在独热编码的Pandas DataFrame中可视化重叠类别?

可视化类别重叠度的几种方案

根据你的DataFrame结构(每行是实例,列是类别,1表示属于该类别),以下是几种适合的可视化方法,覆盖从少类别到多类别的场景:

1. 2-3个类别:维恩图

维恩图适合展示少量类别间的重叠关系,先通过计数筛选出重叠度最高的前2或3个类别,再用matplotlib-venn绘制:

步骤:

  • 先安装依赖库:
pip install matplotlib-venn
  • 示例代码(假设你的DataFrame名为df):
import matplotlib.pyplot as plt
from matplotlib_venn import venn2
import pandas as pd

# 统计每个类别的总实例数,排序后选前2个重叠最高的
category_counts = df.sum().sort_values(ascending=False)
top_cats = category_counts.index[:2].tolist()

# 计算仅属于A、仅属于B、同时属于A和B的实例数
only_a = df[(df[top_cats[0]] == 1) & (df[top_cats[1]] == 0)].shape[0]
only_b = df[(df[top_cats[0]] == 0) & (df[top_cats[1]] == 1)].shape[0]
both = df[(df[top_cats[0]] == 1) & (df[top_cats[1]] == 1)].shape[0]

# 绘制维恩图
venn2(subsets=(only_a, only_b, both), set_labels=top_cats)
plt.title(f"{top_cats[0]}与{top_cats[1]}的重叠情况")
plt.show()

如果是3个类别,替换为venn3,计算7个区域的实例数即可,逻辑和上述代码一致。

2. 多类别:两两重叠热图

如果类别数量超过3个,维恩图会过于拥挤,用热图展示两两类别间的交集计数更直观:

示例代码:

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

categories = df.columns
n = len(categories)
# 初始化重叠计数矩阵
overlap_matrix = np.zeros((n, n))

# 填充矩阵:计算每对类别的共同实例数
for i in range(n):
    for j in range(n):
        overlap_matrix[i][j] = df[(df[categories[i]] == 1) & (df[categories[j]] == 1)].shape[0]

# 绘制热图
plt.figure(figsize=(10, 8))
sns.heatmap(overlap_matrix, annot=True, fmt='g', xticklabels=categories, yticklabels=categories, cmap='Blues')
plt.title("类别两两重叠计数")
plt.show()

热图中,对角线是每个类别的总实例数,其他位置的数值越高,说明对应两个类别的重叠度越高。

3. 多类别:UpSet图(推荐)

UpSet图专门用于展示多个集合的交集分布,比维恩图更清晰,适合类别较多的场景:

步骤:

  • 安装依赖库:
pip install upsetplot
  • 示例代码:
from upsetplot import plot
import pandas as pd

# 统计所有类别组合的出现次数
cat_combinations = df.apply(lambda row: tuple(categories[row == 1]), axis=1).value_counts()

# 绘制UpSet图
plot(cat_combinations)
plt.title("多类别重叠分布")
plt.show()

这个图会清晰展示哪些类别组合的重叠实例数量最多,直接对应你要找的高重叠度类别。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:55:25