首页 > 解决方案 > 大型高维数据集上的 PCA

问题描述

我正在尝试在 python 中对大型数据集(410 000 个条目和 32 000 个特征)执行 PCA 分析,但sklearn.decomposition.PCA不起作用,因为底层 LAPACK 实现无法处理我拥有的那么多数据。它引发以下错误。

Traceback (most recent call last):
  File "main.py", line 47, in <module>
    model.fit(x_std.transform(deep_data))
  File "/home/lib/python3.6/site- 
packages/sklearn/decomposition/_pca.py", line 344, in fit
    self._fit(X)
  File "/home/lib/python3.6/site- 
packages/sklearn/decomposition/_pca.py", line 416, in _fit
    return self._fit_full(X, n_components)
  File "/home/lib/python3.6/site- 
packages/sklearn/decomposition/_pca.py", line 447, in _fit_full
    U, S, V = linalg.svd(X, full_matrices=False)
  File "/home/lib/python3.6/site- 
packages/scipy/linalg/decomp_svd.py", line 125, in svd
    compute_uv=compute_uv, full_matrices=full_matrices)
  File "/home/lib/python3.6/site- 
packages/scipy/linalg/lapack.py", line 605, in _compute_lwork
    raise ValueError("Too large work array required -- computation cannot "
ValueError: Too large work array required -- computation cannot be performed with standard 32-bit LAPACK.

我也尝试过sklearn.decomposition.IncrementalPCA,但由于我的 RAM 没有任何问题,它并没有解决我的问题,它只是引入了更多,因为如果我的批量大小小于它,它不允许我拥有所有 32000 个组件。

是否有任何其他 PCA 实现可以处理这么多数据?我不一定需要全部 410 000 个样本,但我至少需要 32 000 个样本,这样我才能分析所有主成分。

标签: pythonmachine-learningscikit-learnstatisticspca

解决方案


推荐阅读