PCA incremental en big data

Acabo de intentar usar el IncrementalPCA de sklearn.decomposition, pero arrojó un MemoryError al igual que el PCA y RandomizedPCA antes. Mi problema es que la matriz que estoy tratando de cargar es demasiado grande para caber en la RAM. En este momento está almacenado en una base de datos hdf5 como conjunto de datos de forma ~ (1000000, 1000), por lo que tengo 1,000,000,000 de valores float32. Pensé que IncrementalPCA carga los datos en lotes, pero aparentemente intenta cargar todo el conjunto de datos, lo que no ayuda. ¿Cómo se debe utilizar esta biblioteca? ¿Es el formato hdf5 el problema?

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

Gracias por la ayuda

Respuestas a la pregunta(1)

Su respuesta a la pregunta