2017-04-11 61 views
5

我試圖減少在Sklearn中使用PCA的非常大的矩陣的維數,但它會產生內存錯誤(RAM需要超過128GB)。我已經設置了copy = False,而且我使用的計算量較少,隨機化的PCA。Sklearn中的PCA內存錯誤:替代暗淡減少?

是否有解決方法?如果不是,我可以使用哪些暗淡減少技術,需要更少的內存。謝謝。


更新:矩陣我想要PCA是一組特徵向量。它來自一組訓練圖像通過預訓練CNN。矩陣是[300000,51200]。 PCA組件嘗試過:100到500.

我想減少它的維度,所以我可以使用這些特性來訓練一個ML算法,比如XGBoost。謝謝。

+1

這使我想到了[XY問題]的(HTTPS://meta.stackexchange的.com /一個/311624分之66378)。爲什麼你想要降低維度?你想用這個矩陣實現什麼?它是一個密集的矩陣? – iled

+0

請提供更多信息:您使用了多少組件,您的輸入數據集大小是多少等。 – rth

+0

您可以嘗試某種類型的特徵縮減技術,以從集合中刪除任何冗餘/非信息特徵。 – ralston

回答

2

最後,我用TruncatedSVD代替PCA,它能夠處理大型矩陣無記憶的問題:

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)