我计划使用Pandas get_dummies()生成一个70000行150000列的庞大稀疏矩阵,但我遇到了MemoryError。如何在这个稀疏矩阵上应用PCA来降低维度?
看看这个答案。您将希望使用sklearn.decomposition.TruncatedSVD
对稀疏矩阵进行PCA。例如:
import numpy as np
from scipy.sparse import coo_matrix
from sklearn.decomposition import TruncatedSVD
# create a sparse matrix:
np.random.seed(0)
i = np.random.randint(0, 100, 500)
j = np.random.randint(0, 1000, 500)
vals = np.random.random(500)
M = coo_matrix((vals, (i, j)), shape=(100, 1000))
# compute the sparse PCA
comp = TruncatedSVD(n_components=2).fit_transform(M)
comp.shape
# (100, 2)
如果稀疏矩阵本身太大而无法存储在内存中,则可以使用IncrementalPCA
的partial_fit
方法进行在线更新,尽管它只接受密集输入。