0

我正在尝试从 csv 生成邻接矩阵。

csv 包含 2 列,1 列用于用户,1 列用于项目。这两列形成一个二分图,其中每个用户可以是多个项目的一部分或根本没有,但同一集合的节点之间没有边(同一用户-项目对没有重复条目,但有重复条目相同的用户或项目具有不同的配对组合)。

我使用 Matlab 和 ismember(a,b) 编写了一个比较,用于将每个用户的项目与整个项目集进行比较。该算法通过每个条目迭代运行。最后,我有一个大小为 M(|users| + |user|) x (|users| + |user|) 的邻接矩阵。

对于小于 15000 的小条目计数,它工作得很快,但对于 +15000 的样本,Matlab 会停止。我用零矩阵 (zero(r,c)) 初始化邻接矩阵,并逐行添加 ismember(a,b) 的结果。但是对于我的 Matlab,零矩阵 zero(15000,15000) 几乎会耗尽内存。我还尝试在 R 中创建一个具有该大小的零矩阵 (matrix(0, 15000, 15000)),它还最大化了 R 的内存。

有没有办法解决这个问题?我的完整样本量为 597,000 行(约 70,000 个用户和约 35,000 个项目),我想对其进行网络分析。

此外,我想将它保留为矩阵格式而不是邻接列表,因为我有一个最大切割最小流算法,我想在结果上运行它,它只适用于矩阵。

更新:

数据看起来像这样

用户 | 项目
382 2429
385 2838
294 2502
……

它是从 SourceForge 使用 Notredame 大学的 Zerlot 获取的。其中每个 int 值都是 SQL 数据库中的一个键。我想将此隶属关系数据转换为单模式用户到用户邻接矩阵,其中用户之间的每条边都是一个共享项目。

4

0 回答 0