PCA для большого и большого размерного набора данных - PullRequest
1 голос
/ 26 февраля 2020

Я пытаюсь выполнить анализ PCA для большого набора данных (410 000 записей и 32 000 функций) в python, но 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, но, поскольку у меня нет проблем с оперативной памятью, она не решила мою проблему, она только добавила больше, поскольку не позволяла мне иметь все 32000 компонентов, если размер моего пакета меньше этого.

Есть ли какая-либо другая реализация PCA, которая может обрабатывать такое количество данных? Мне не обязательно нужны все 410 000 образцов, но мне нужно как минимум 32 000, чтобы я мог проанализировать все основные компоненты.

...