来自800万行数据的共现图

d12*_*12n -3 php python mysql r

我有800万个唯一的user_id到item_id配对,看起来像这样:

user_id     item_id
 1           item10
 1           item11
 1           item12
 1           item13
 2           item11
 2           item13
 2           item14
 2           item15
 3           item10
 3           item14
 3           item18
Run Code Online (Sandbox Code Playgroud)

我想把它变成以下格式:node1,node2,weight,其中所有节点都是user_id,它们之间的权重是它们共享的item_id的数量.因此,例如,1和2连接,因为它们共享2个item_id [item11和item13],1和3共享1 item_id [item_10],2和3共享1以及...等等.

1,2,2
1,3,1
2,3,1
Run Code Online (Sandbox Code Playgroud)

这将是我正在寻找的最终结果.但是,我有800万行(大约25个唯一的user_id,但很多连接)最有效的方法是什么?我用来从大约50.000行检索类似(但不完全相同)的网络的SQL查询需要很长时间,所以我正在寻找替代方案.我可以用R,php,sql或python来做.

Mar*_*c B 5

就像是

SELECT node1.user_id, node2.user_id, COUNT(item_id)
FROM yourtable AS node1
JOIN yourtable AS node2 ON
    (node1.user_id <> node2.user_id) AND (node1.item_id = node2.item_id)
GROUP BY node1.user_id, node2.user_id
Run Code Online (Sandbox Code Playgroud)

?