【问题标题】:Sklearn-GMM on large datasets大型数据集上的 Sklearn-GMM
【发布时间】:2015-05-19 16:27:10
【问题描述】:

我有一个大型数据集(我无法将整个数据都放在内存中)。我想在这个数据集上拟合 GMM。

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

【问题讨论】:

    标签: python scikit-learn bigdata mixture-model


    【解决方案1】:

    正如 Andreas Mueller 所提到的,GMM 还没有 partial_fit,这将允许您以迭代方式训练模型。但是您可以在创建 GMM 对象时通过将其值设置为True 来使用warm_start。这使您可以迭代成批数据并从上次迭代中离开的位置继续训练模型。

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      我认为您可以在创建GMM 对象时将init_para 设置为空字符串'',那么您也许可以训练整个数据集。

      【讨论】:

        【解决方案3】:

        fit 总是会忘记 scikit-learn 中以前的数据。对于增量拟合,有partial_fit 函数。不幸的是,GMM 还没有partial_fit,所以你不能这样做。

        【讨论】:

          【解决方案4】:

          没有理由重复拟合它。 只需随机抽取您认为您的机器可以在合理时间内计算的尽可能多的数据点。如果变异不是很大,随机样本将与完整数据集具有大致相同的分布。

          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,000,000 个数据样本的 4-64 个数据集样本,这种大小的随机样本无法很好地近似分布。
          猜你喜欢
          • 2014-07-15
          • 2020-06-10
          • 1970-01-01
          • 1970-01-01
          • 2018-09-11
          • 2017-05-11
          • 2015-02-13
          • 2016-08-01
          • 2019-10-24
          相关资源
          最近更新 更多