Sklearn:如何对庞大的数据集进行降维?
Sklearn: How to apply dimensionality reduction on huge data set?
问题:在对 800 万个特征应用 PCA 时显示内存不足错误。
这是我的代码片段:-
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 错误,我卡住了。
我想,traindata_tfidf
实际上是一个稀疏的形式。尝试使用 scipy sparse formats instead of an array. Also take a look at SparsePCA methods, and if it doesn't help, use MiniBatchSparsePCA.
之一
我遇到过类似的问题。使用受限玻尔兹曼机 (RBM) 而不是 PCA 解决了这个问题。从数学上讲,这是因为 PCA 仅查看特征矩阵的特征值和特征向量,而 RBM 作为神经网络来考虑数据中特征的所有乘法可能性。因此,在决定哪些特征更重要时,RBM 需要考虑的范围要大得多。然后它将特征的数量减少到比 PCA 更重要的特征的更小的尺寸。但是,请务必在将 RBM 应用于数据之前对数据进行特征缩放和规范化。
问题:在对 800 万个特征应用 PCA 时显示内存不足错误。
这是我的代码片段:-
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 错误,我卡住了。
我想,traindata_tfidf
实际上是一个稀疏的形式。尝试使用 scipy sparse formats instead of an array. Also take a look at SparsePCA methods, and if it doesn't help, use MiniBatchSparsePCA.
我遇到过类似的问题。使用受限玻尔兹曼机 (RBM) 而不是 PCA 解决了这个问题。从数学上讲,这是因为 PCA 仅查看特征矩阵的特征值和特征向量,而 RBM 作为神经网络来考虑数据中特征的所有乘法可能性。因此,在决定哪些特征更重要时,RBM 需要考虑的范围要大得多。然后它将特征的数量减少到比 PCA 更重要的特征的更小的尺寸。但是,请务必在将 RBM 应用于数据之前对数据进行特征缩放和规范化。