【问题标题】:Can co-occurance of word be calculated using R/ python/ Map reducer?可以使用 R/python/Mapreduce 计算单词的共现吗?
【发布时间】:2013-12-10 17:12:01
【问题描述】:

我有一个包含 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 来完成吗?这些行的任何帮助或指示也会有所帮助。

【问题讨论】:

  • 180x200000=3.6*10**7,没那么多,只要你弄清楚你到底想找什么,眨眼就可以完成。可能,指定矩阵的几行和出现次数的预期结果是最简单的方法。那些 (1,2)、(1,3) 等是什么?
  • “每个矩阵都是一个数字”?那不是矩阵而不是标量吗?
  • @Hyperboreus 我认为他的意思是矩阵中的每个条目都是一个数字。

标签: python r


【解决方案1】:

对数只是单例数的乘积。

在我使用 R 的旧 MacBook Pro 上这需要 5 秒:

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

mat

现在每一行的表格数字:

tab

现在找出每一行中的对数:

cp

对行求和:

colSums(cp)

验证第一行的结果:

tab2

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 2018-07-04
    • 1970-01-01
    • 2018-08-15
    • 2016-06-04
    相关资源
    最近更新 更多