Вам нужно для l oop для IncrementalPCA, чтобы поддерживать постоянное использование памяти? - PullRequest
1 голос
/ 07 января 2020

В прошлом я пытался использовать IncrementalPCA scikit-learn, чтобы уменьшить использование памяти. Я использовал этот ответ в качестве шаблона для моего кода. Но, как сказал @aarslan в разделе комментариев: «Я заметил, что объясненная дисперсия, похоже, уменьшается на каждой итерации». Я всегда подозревал последний for loop в данном ответе. Итак, мой вопрос: мне нужно для l oop, чтобы поддерживать постоянное использование памяти во время шага partial_fit, или достаточно batch_size в одиночку? Ниже вы можете найти код:

import h5py
import numpy as np
from sklearn.decomposition import IncrementalPCA

h5 = h5py.File('rand-1Mx1K.h5')
data = h5['data'] # it's ok, the dataset is not fetched to memory yet

n = data.shape[0] # how many rows we have in the dataset
chunk_size = 1000 # how many rows we feed to IPCA at a time, the divisor of n
icpa = IncrementalPCA(n_components=10, batch_size=16)

for i in range(0, n//chunk_size):
    ipca.partial_fit(data[i*chunk_size : (i+1)*chunk_size])
...