Инкрементальный PCA на больших данных

Я только что попытался использовать IncrementalPCA из sklearn.decomposition, но он бросил MemoryError точно так же, как PCA и RandomizedPCA ранее. Моя проблема в том, что матрица, которую я пытаюсь загрузить, слишком велика, чтобы поместиться в ОЗУ. Сейчас он хранится в базе данных hdf5 как набор данных формы ~ (1000000, 1000), поэтому у меня есть 1.000.000.000 значений типа float32. Я думал, что IncrementalPCA загружает данные в пакетном режиме, но, по-видимому, он пытается загрузить весь набор данных, что не помогает. Как эта библиотека предназначена для использования? Является ли формат hdf5 проблемой?

from sklearn.decomposition import IncrementalPCA
import h5py

db = h5py.File("db.h5","r")
data = db["data"]
IncrementalPCA(n_components=10, batch_size=1).fit(data)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/software/anaconda/2.3.0/lib/python2.7/site-packages/sklearn/decomposition/incremental_pca.py", line 165, in fit
    X = check_array(X, dtype=np.float)
  File "/software/anaconda/2.3.0/lib/python2.7/site-packages/sklearn/utils/validation.py", line 337, in check_array
    array = np.atleast_2d(array)
  File "/software/anaconda/2.3.0/lib/python2.7/site-packages/numpy/core/shape_base.py", line 99, in atleast_2d
    ary = asanyarray(ary)
  File "/software/anaconda/2.3.0/lib/python2.7/site-packages/numpy/core/numeric.py", line 514, in asanyarray
    return array(a, dtype, copy=False, order=order, subok=True)
  File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper (-------src-dir-------/h5py/_objects.c:2458)
  File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper (-------src-dir-------/h5py/_objects.c:2415)
  File "/software/anaconda/2.3.0/lib/python2.7/site-packages/h5py/_hl/dataset.py", line 640, in __array__
    arr = numpy.empty(self.shape, dtype=self.dtype if dtype is None else dtype)
MemoryError

Спасибо за помощь

Ответы на вопрос(1)

Ваш ответ на вопрос