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]])

ただし、非常に大きなデータセットがあります。共起行列を 1 つずつ組み立てる必要がなく、値を に保存する場合、int643e+9 の数値を使用すると、データを保持するだけで 24 GB の RAM が必要になりますhttp://www.wolframalpha.com/入力/?i=3e9+ *+8+バイト。したがって、おそらくよく考えてdtype、データをどこに保存するかを決定することをお勧めします: http://docs.scipy.org/doc/numpy/user/basics.types.html。使用することで、現在のまともなデスクトップ PC で製品int16の操作が可能になるでしょう。dot

于 2013-10-08T18:33:30.533 に答える