2015-03-17 2 views
1

У меня большой набор данных (я не могу вместить целые данные в память). Я хочу установить GMM в этот набор данных.Sklearn-GMM на больших наборах данных

Могу ли я использовать GMM.fit() (sklearn.mixture.GMM) несколько раз на мини-партии данных?

ответ

3

Нет причин поместиться повторно. Просто произвольно выберите столько точек данных, сколько вы думаете, что ваша машина может вычислить в разумные сроки. Если вариация не очень высока, случайная выборка будет иметь примерно такое же распределение, что и полный набор данных.

randomly_sampled = np.random.choice(full_dataset, size=10000, replace=False) 
#If data does not fit in memory you can find a way to randomly sample when you read it 

GMM.fit(randomly_sampled) 

А использование

GMM.predict(full_dataset) 
# Again you can fit one by one or batch by batch if you cannot read it in memory 

на остальных, чтобы классифицировать их.

1

fit всегда забудет предыдущие данные в scikit-learn. Для инкрементного подгонки есть функция partial_fit. К сожалению, GMM не имеет partial_fit (пока), поэтому вы не можете этого сделать.

0

Я думаю, вы можете установить init_para на пустую строку '' при создании объекта GMM, тогда вы сможете обучить весь набор данных.

Смежные вопросы