问题:在800万个功能上应用PCA时出现OutOfMemory错误。
这是我的代码snipet: -
from sklearn.decomposition import PCA as sklearnPCA
sklearn_pca = sklearnPCA(n_components=10000)
pca_tfidf_sklearn = sklearn_pca.fit(traindata_tfidf.toarray())
我想在文本提取功能上应用PCA /降维技术(使用tf-idf)。目前我有大约800万这样的功能,我想减少这些功能,并对我使用MultiNomialNB的文档进行分类。
由于OutOfMemory错误,我被困了。
答案 0 :(得分:2)
我遇到过类似的问题。使用受限制的玻尔兹曼机(RBM)代替PCA解决了这个问题。在数学上,这是因为PCA只查看特征矩阵的EigenValues和EigenVectors,而RBM作为神经网络来考虑数据中所有特征的乘法可能性。因此,在决定哪些特征更重要时,RBM有更大的考虑因素。然后,它将功能的数量减少到更小的尺寸,具有比PCA更重要的功能。但是,在将RBM应用于数据之前,请务必使用“比例缩放”和“标准化”数据。
答案 1 :(得分:1)
我想,traindata_tfidf
实际上是一种稀疏的形式。尝试使用scipy sparse格式之一而不是数组。另请查看SparsePCA方法,如果没有帮助,请使用MiniBatchSparsePCA。