我有一个很大的数据集(我无法在内存上容纳整个数据(。我想在这个数据集上拟合一个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
,所以你不能这样做。
正如Andreas Mueller所提到的,GMM还没有partial_fit
,这将允许你以迭代的方式训练模型。但是,您可以通过在创建 GMM 对象时将其值设置为 True
来利用warm_start
。这允许您迭代数据批次,并从上次迭代中离开的位置继续训练模型。
我认为您可以在创建GMM
对象时''
将init_para
设置为空字符串,然后您也许能够训练整个数据集。