2017-04-11 7 views
5

SklearnのPCAを使って非常に大きな行列の次元数を減らそうとしていますが、メモリエラーが発生します(128GBを超えるRAMが必要です)。私はすでにcopy = Falseを設定しています。計算量の少ない無作為PCAを使用しています。SklearnのPCAメモリエラー:代替減縮?

回避策はありますか?そうでない場合は、メモリを必要としない他の減光技術を使用することができます。ありがとうございました。


更新:私がPCAにしようとしている行列は、一連の特徴ベクトルです。これは、事前にトレーニングされたCNNを介してトレーニング画像のセットを渡すことから来ます。行列は[300000,51200]です。 PCAコンポーネントが試したもの:100から500.

これらの機能を使用して、XGBoostなどのMLアルゴを鍛えることができます。ありがとうございました。最後に

+1

これは私が[XY問題](HTTPSを考えさせます.com/a/66378/311624)。なぜあなたは次元を減らしたいのですか?あなたはそのマトリックスで何を達成しようとしていますか?それは密な行列ですか? – iled

+0

より多くの情報をご提供ください:使用しているコンポーネントの数、入力データセットのサイズなど – rth

+0

冗長な/覚えていない機能をセットから削除するには、何らかのタイプの機能削減手法を試すことができます。 – ralston

答えて

2

が、私はメモリの問題もなく大きな行列を処理することが可能であるTruncatedSVDの代わりに、PCAを、使用://meta.stackexchange:

from sklearn import decomposition 

n_comp = 250 
svd = decomposition.TruncatedSVD(n_components=n_comp, algorithm='arpack') 
svd.fit(train_features) 
print(svd.explained_variance_ratio_.sum()) 

train_features = svd.transform(train_features) 
test_features = svd.transform(test_features)