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

Posted

技术标签:

【中文标题】在 Python 中为大型数据集创建邻接矩阵【英文标题】:Create Adjacency Matrix in Python for large Dataset 【发布时间】:2016-06-25 15:33:27 【问题描述】:

我在用 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

我很高兴得到任何建议

【问题讨论】:

【参考方案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 中为大型数据集创建邻接矩阵的主要内容,如果未能解决你的问题,请参考以下文章

从 CSV 文件中的邻接矩阵绘制 NetworkX 图

Python 将关系对数据转换为图数据 / 邻接矩阵

Python 将关系对数据转换为图数据 / 邻接矩阵

Python 将关系对数据转换为图数据 / 邻接矩阵

从电子表格以 Python 方式创建邻接矩阵

图的存储结构:邻接矩阵(邻接表)&链式前向星