python - 在 Python 中为大型数据集创建邻接矩阵

标签 python numpy matrix adjacency-matrix bigdata

我在用 Python 的邻接矩阵表示网站用户行为时遇到了问题。我想分析 43 个不同网站之间的用户交互,看看哪些网站是一起使用的。

给定的数据集大约有 13.000.000 行,结构如下:

 user website
 id1  web1
 id1  web2
 id1  web2
 id2  web1
 id2  web2
 id3  web3
 id3  web2

我想像这样在邻接矩阵中可视化网站之间的交互:

     web1 web2 web3
 web1  2    2    0
 web2  2    4    1
 web3  0    1    1

我很高兴得到任何建议

最佳答案

import scipy.sparse

data = """
 id1  web1
 id1  web2
 id1  web2
 id2  web1
 id2  web2
 id3  web3
 id3  web2
"""

data = np.array(data.split()).reshape(-1, 2)
_, i = np.unique(data[:, 0], return_inverse=True)
_, j = np.unique(data[:, 1], return_inverse=True)

incidence = scipy.sparse.coo_matrix((np.ones_like(i), (i,j)))
adjecency = incidence.T * incidence

print(adjecency.todense())

关于python - 在 Python 中为大型数据集创建邻接矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38030054/

相关文章:

python - 捕获视频文件的屏幕截图/帧

python - 复杂条件和

c++ - 复制数据的奇怪错误

python - 有优化这个算法的想法吗?

python - 避免在终端/cmd 上运行 FFmpeg

python - 情感分析管道,使用特征选择时获取正确特征名称的问题

python - 如何将 ndarray 转换为结构化数组?

python - 计算 numpy 列表中项目的精确共现次数

c++ - 如何从 C++ 中的矩阵 (Mat) 返回特定值的索引?

python - csv文件中的 'rb'是什么意思?