У меня большой набор данных (я не могу вместить целые данные в память). Я хочу установить GMM в этот набор данных.Sklearn-GMM на больших наборах данных
Могу ли я использовать GMM.fit()
(sklearn.mixture.GMM
) несколько раз на мини-партии данных?
У меня большой набор данных (я не могу вместить целые данные в память). Я хочу установить GMM в этот набор данных.Sklearn-GMM на больших наборах данных
Могу ли я использовать GMM.fit()
(sklearn.mixture.GMM
) несколько раз на мини-партии данных?
Нет причин поместиться повторно. Просто произвольно выберите столько точек данных, сколько вы думаете, что ваша машина может вычислить в разумные сроки. Если вариация не очень высока, случайная выборка будет иметь примерно такое же распределение, что и полный набор данных.
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
на остальных, чтобы классифицировать их.
fit
всегда забудет предыдущие данные в scikit-learn. Для инкрементного подгонки есть функция partial_fit
. К сожалению, GMM
не имеет partial_fit
(пока), поэтому вы не можете этого сделать.
Я думаю, вы можете установить init_para
на пустую строку ''
при создании объекта GMM
, тогда вы сможете обучить весь набор данных.