关于大型数据集的Sklearn-GMM

时间:2015-03-17 09:42:43

标签: python scikit-learn bigdata mixture-model

我有一个大型数据集(我不能将整个数据放在内存中)。我想在这个数据集上使用GMM。

我可以在小批量数据上反复使用GMM.fit()sklearn.mixture.GMM)吗?

3 个答案:

答案 0 :(得分:5)

没有理由反复适应它。 只需随机抽取您认为机器可在合理时间内计算的数据点。如果变化不是很高,则随机样本将具有与完整数据集大致相同的分布。

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 :(得分:2)

fit将始终忘记scikit-learn中的先前数据。对于增量拟合,有partial_fit函数。不幸的是,GMM还没有partial_fit(尚未),所以您无法做到。

答案 2 :(得分:0)

正如Andreas Mueller所述,GMM还没有partial_fit,可让您以迭代的方式训练模型。但是,当您创建GMM对象时,可以通过将其值设置为warm_start来使用True。这样一来,您就可以遍历大量数据,并从上次迭代中离开模型的地方继续训练模型。

希望这会有所帮助!