使用scikit-learn.mixture.GMM寻找条件高斯混合模型

5
我正在使用scikit-learn将多元高斯混合模型拟合到一些数据上(这非常成功)。但我需要能够在某些变量条件下得到一个新的GMM,而scikit工具包似乎无法做到这一点,这让我感到惊讶,因为这似乎是一个非常基本的需求。
维基百科有一个很好的解释,说明了我要做的事情(对于单个高斯而不是GMM),我可能可以自己实现它,但我的矩阵数学不是很好,我可以看出这需要很长时间。
是否已经有人做过这个?是否有一种使用NumPy/SciPy/Scikit-learn轻松完成它的方法?

沿着相关轴切分您的数据张量。 - Slater Victoroff
@SlaterTyranus 我认为你建议我对数据集的切片版本进行GMM拟合。我想从已经适配到完整数据集的GMM中获得条件GMM。 - TomG
@TomG 嗨Tom,你找到解决问题的方法了吗?被采纳的答案对我不起作用。 - azal
1个回答

3

您可以尝试查看 pypr。从文档中可以看到,以下是如何找到一个基于一个或多个变量的GMM模型:

# Now we will find the conditional distribution of x given y
(con_cen, con_cov, new_p_k) = gmm.cond_dist(np.array([np.nan, y]), \
    cen_lst, cov_lst, p_k)

据我所记,软件包中附有示例。

我对使用被描述为“早期阶段”的代码感到紧张,而且这个代码已经4年没有更新了,但我还是尝试了一下。不幸的是,em_gm.py示例(带有条件GMM)无法正常工作 - 作者似乎在gmm.em_gm的定义中将关键字“iter”用作变量名,导致程序崩溃。 - TomG
在文档中给出的示例中,将“ iter = 400”和“ iter_call = None”设置为“ max_iter = 400”。如果您想跟踪EM算法的进度,可以修改绘图函数。 - statBeginner
谢谢!除此之外还有一些问题(比如一些已记录的功能只在SVN中,而不在最新下载版本中),但我已经解决了! - TomG
如果您觉得这个答案有帮助,请接受它。 :) - statBeginner
抱歉,我在这里是个新手 - 我不得不查找如何接受答案。 - TomG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接