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

如何用Python统计类别共现并生成关联矩阵(是否为heat map?)

问题解答

嗨,我来帮你理清这两个问题并给出简洁的Python实现方案:

1. 关于矩阵类型的疑问

你提到的这个统计类别间同时为1次数的矩阵,叫做类别共现矩阵(co-occurrence matrix)。而热力图(heatmap)是将这种矩阵用颜色深浅来可视化的一种图表形式——简单说,共现矩阵是你要计算的目标数据,热力图是它的可视化展示方式,两者不能直接划等号,但你完全可以把这个共现矩阵绘制成热力图,直观观察类别间的关联强弱。

2. Python简便实现方法

最简洁的方式是利用矩阵乘法的特性:因为你的原始数据是二进制(0/1)矩阵,共现矩阵其实就是原始矩阵的转置矩阵与原矩阵的乘积——每一个位置的元素会自动计算对应两列同时为1的次数,完美匹配你的需求。

下面用pandas结合numpy来实现,步骤清晰且代码简洁:

步骤1:加载原始数据

先把你的原始数据转换成DataFrame:

import pandas as pd

# 原始数据对应你给出的表格
data = {
    'cat1': [0, 1, 0, 0],
    'cat2': [1, 0, 0, 1],
    'cat3': [1, 0, 1, 1],
    'cat4': [0, 0, 1, 1]
}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd'])

步骤2:计算共现矩阵

直接一行代码搞定矩阵乘法:

# 转置矩阵点乘原矩阵,得到共现矩阵
co_occurrence = df.T.dot(df)
print(co_occurrence)

运行后输出的结果完全符合你的预期:

cat1  cat2  cat3  cat4
cat1     1     0     0     0
cat2     0     2     2     1
cat3     0     2     3     2
cat4     0     1     2     2

额外:绘制热力图(可选)

如果你想把这个矩阵做成热力图来直观展示,可以用seaborn库快速实现:

import seaborn as sns
import matplotlib.pyplot as plt

sns.heatmap(co_occurrence, annot=True, cmap='Blues', fmt='d')
plt.title('Category Co-occurrence Heatmap')
plt.show()

这样就能生成一张热力图,颜色越深代表对应类别对的共现次数越多,标注的数字也能让你直接看到具体次数。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:03:58