生成大邻接矩阵

时间:2015-05-31 05:39:53

标签: r matlab matrix adjacency-matrix network-analysis

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

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

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

对于小入境次数< 15000,它工作得很快,但对于+15000的样本,Matlab停止工作。我使用零矩阵(零(r,c))初始化邻接矩阵,并逐行添加ismember(a,b)的结果。但是对于我的Matlab,零(15000,15000)的零矩阵几乎可以最大化内存。我尝试在R中使用该大小(矩阵(0,15000,15000))制作零矩阵,并且它还最大化了R的存储器。

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

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

更新:

数据如下所示

User  |  Project
382       2429
385       2838
294       2502
...       ...

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

0 个答案:

没有答案