我试图在Sklearn中使用PCA来减小非常大的矩阵的维数,但它会产生内存错误(RAM需要超过128GB)。我已经设置了copy = False,而且我正在使用计算成本较低的随机PCA。
有解决方法吗?如果没有,我可以使用哪些其他暗淡减少技术需要更少的内存。谢谢。
更新:我尝试PCA的矩阵是一组特征向量。它来自于通过预训练的CNN传递一组训练图像。矩阵是[300000,51200]。尝试了PCA组件:100到500。
我想减少它的维度,所以我可以使用这些功能来训练ML算法,例如XGBoost。谢谢。
最后,我使用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)