2017-04-11 71 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)