【发布时间】:2015-05-19 16:27:10
【问题描述】:
我有一个大型数据集(我无法将整个数据都放在内存中)。我想在这个数据集上拟合 GMM。
我可以在小批量数据上重复使用GMM.fit() (sklearn.mixture.GMM) 吗?
【问题讨论】:
标签: python scikit-learn bigdata mixture-model
我有一个大型数据集(我无法将整个数据都放在内存中)。我想在这个数据集上拟合 GMM。
我可以在小批量数据上重复使用GMM.fit() (sklearn.mixture.GMM) 吗?
【问题讨论】:
标签: python scikit-learn bigdata mixture-model
正如 Andreas Mueller 所提到的,GMM 还没有 partial_fit,这将允许您以迭代方式训练模型。但是您可以在创建 GMM 对象时通过将其值设置为True 来使用warm_start。这使您可以迭代成批数据并从上次迭代中离开的位置继续训练模型。
希望这会有所帮助!
【讨论】:
我认为您可以在创建GMM 对象时将init_para 设置为空字符串'',那么您也许可以训练整个数据集。
【讨论】:
fit 总是会忘记 scikit-learn 中以前的数据。对于增量拟合,有partial_fit 函数。不幸的是,GMM 还没有partial_fit,所以你不能这样做。
【讨论】:
没有理由重复拟合它。 只需随机抽取您认为您的机器可以在合理时间内计算的尽可能多的数据点。如果变异不是很大,随机样本将与完整数据集具有大致相同的分布。
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
对其余部分进行分类。
【讨论】: