将大量数据拟合到 GMM 时如何解决 sklearn 中的 MemoryError?

How to solve MemoryError in sklearn when fitting huge data to a GMM?

我正在尝试基于大量提取的 MFCC 特征生成通用背景模型 (UBM),但是当我将数据拟合到模型时,我一直得到 MemoryError。这是相关代码部分:

files_features.shape
(2469082, 56)
gmm = GMM(n_components = 1024, n_iter = 512, covariance_type = 'full', n_init = 3)
gmm.fit(features)

有没有办法解决这个错误或者分解数据的处理来避免内存错误。我是这个领域的新手,如果能得到任何帮助,我将不胜感激。

[更新]

不幸的是, 中提到的答案没有解决我的问题,因为 data_set 被认为具有低方差,而在我的情况下:

round(np.var(files_features), 3)
47.781

增量拟合可能是一种解决方案,但 scikit-learn 没有这样的 partial_fit GMM。我将不胜感激关于如何解决这个问题的任何建议,无论是替代库建议、partial_fit 参考实现还是逐批处理数据(在这种情况下不起作用,因为 GMM.fit() 是无内存的)?

使用 Dask 非常简单。
只需使用 Dask 的 DataFrame 而不是 pandas',其他一切都应该可以正常工作而无需任何更改。

作为 scikit-learn 的替代方案,您可以使用 Turis' Graphlab Create,它可以处理任意大型数据集(尽管我不确定它是否支持 GMM)。

有同样问题的朋友,推荐使用Bob library,它支持大数据处理,甚至可以并行处理。

在我的用例中 Bob 非常适合 GMM-UBM 系统的开发,因为所有相关功能都已实现。