可以使用R / python / Mapreduce计算单词的共现吗?

时间:2013-11-25 20:04:32

标签: python r

我有一个包含180列和200,000行的庞大数据库。为了更好地说明,我有一个180 x 200000的矩阵。每个矩阵是一个数字的数字。我需要找到他们的共现计数。 例如,我有5列的数据,其值为1,2,3,4,5。我需要找到次数(1,2),(1,3),(1,4),(1,5),(2,3),(2,4),(2,5), (3,4),(3,5),(4,5)已在数据库中发生。你能告诉我一个解决这个问题的方法吗? 我接触过R和python。所以任何使用它们的建议都会有所帮助。 这也可以使用AWS map reducer完成吗?这些方面的任何帮助或指示也会有所帮助。

1 个答案:

答案 0 :(得分:2)

对的计数只是单身人数的产物。

使用R:

在我一岁的MacBook Pro上花费5秒钟

生成一个200000行和180列的矩阵,其元素为数字:

  

mat< - matrix(样本(0:9,180 * 200000,repl = T),nc = 180)

现在每行的表格数字:

  

tab< - sapply(0:9,function(x)rowSums(mat == x))

现在找到每行中的对数:

  

cp< - combn(0:9,2,function(x)tab [,1 + x [1]] * tab [,1 + x [2]])

汇总行:

  

colSums(CP)

验证第一行的结果:

  

tab2< - table(matrix(mat [1,],nr = 180,nc = 180),matrix(mat [1,],nr = 180,nc = 180,byrow = TRUE))

     

all(tab2 [lower.tri(tab2)] == cp [1,])