0

我在这里问了这个问题:如何将出现矩阵转换为共现矩阵

我意识到我的数据是如此之大,以至于无法使用 R 来执行此操作。我的计算机挂起。实际数据是一个包含约 500 万行和 600 列的文本文件。我认为 Python 可能是执行此操作的替代选择。

4

1 回答 1

0

这将是您将R代码转换为代码的方式Python

>>> import numpy as np
>>> a=np.array([[0, 1, 0, 0, 1, 1],
             [0, 0, 1, 1, 0, 1],
             [1, 1, 1, 1, 0, 0],
             [1, 1, 1, 0, 1, 1]])
>>> acov=np.dot(a.T, a)
>>> acov[np.diag_indices_from(acov)]=0
>>> acov
array([[0, 2, 2, 1, 1, 1],
       [2, 0, 2, 1, 2, 2],
       [2, 2, 0, 2, 1, 2],
       [1, 1, 2, 0, 0, 1],
       [1, 2, 1, 0, 0, 2],
       [1, 2, 2, 1, 2, 0]])

但是,您有一个非常大的数据集。如果您不想一块一块地组装共现矩阵并将您的值存储在int643e+9 数字中,那么仅保存数据就需要 24GB 的 RAM http://www.wolframalpha.com/输入/?i=3e9+ *+8+字节。因此,您可能需要考虑并决定dtype要将数据存储在哪个位置:http: //docs.scipy.org/doc/numpy/user/basics.types.html。使用现在int16可能会使dot产品在一台像样的台式电脑上运行成为可能。

于 2013-10-08T18:33:30.533 回答