2016-05-13 6 views
-1

Pythonでは、データセットXがあり、行がサンプルの異なる要素であり、列がサンプルの異なるフィーチャである場合、私は通常、次のように相関行列を計算します(ゼロ)意味:巨大なデータセットとの相関行列 - Python

import numpy as np 
np.transpose(X).dot(X)/row 

は今、私は10のmilion行と列の1 milionを持っているデータセットXを持っている、と私はその相関行列を計算しようとすると、コンピュータがブロックされたままになります。 forループを実行する代わりに、データセットが小さくても非常に遅いため、実行できないように見えます。

どのように私はそのようなデータ量を管理するのですか?

+0

100万列?どのような種類のデータに100万列*が必要ですか?このタイプのデータセットは他の場所でも問題を引き起こす可能性があるため、問題を再考することをお勧めします。 – Evert

+0

@Evert Natual言語処理の問題のデータセットです。行はドキュメントであり、列はブール値です。列iは、辞書内の位置がドキュメント内にあるかどうかを示します。 –

+2

_ "私はそのようなデータ量をどうやって管理していますか?"その部分集合から始まり、それを使って気分を盛り上げましょう。どのアルゴリズムが最も効果的で、どの結果が重要であり、無視できるのか、というデータ構造...後でもっと知識があれば、どれだけのデータがあなたがそれをどのように処理しようとしているかを示します。 – gboffi

答えて

0

おそらく発電機を使用できますか?私はそれが受け入れがたい速いかどうかわからないが、それはコンピュータがブロックされないようにメモリ上より良いでしょう。例を言い換えこのhttps://gist.github.com/thatdatabaseguy/2577076

よう 何か:

import numpy as np 

def my_gen(some_tuple): 
    for each in some_tuple: 
     yield each 

X = np.fromiter(my_gen(database.get_data())) # get_data() would return a cursor 

編集: これは、あなたのデータを分割/変換/縮小の別の方法を見つけることができない場合にはあります。どちらの方法でも、1台のコンピュータで処理するのは難しいでしょう。 幸運を祈る!

関連する問題