使用 scikit-learn.mixture.GMM 寻找条件高斯混合模型
Posted
技术标签:
【中文标题】使用 scikit-learn.mixture.GMM 寻找条件高斯混合模型【英文标题】:Finding conditional Gaussian Mixture Model using scikit-learn.mixture.GMM 【发布时间】:2015-03-27 20:43:54 【问题描述】:我正在使用scikit-learn 将多元高斯混合模型拟合到一些数据(效果很好)。但是我需要能够以 some 变量为条件获得一个新的 GMM,而 scikit 工具包似乎无法做到这一点,这让我感到惊讶,因为它看起来很基本想做的事。
Wikipedia has a good explanation 我正在尝试做的事情(对于单个高斯,而不是 GMM),我有可能自己实现它,但是我的矩阵数学不是很好,我可以看到它需要很长时间。
有人已经这样做了吗?有没有使用 NumPy/SciPy/Scikit-learn 的简单方法?
【问题讨论】:
沿相关轴切分你的数据张量。 @SlaterTyranus 我认为您建议我将 GMM 拟合到我的数据集的切片版本。我想从我已经适合完整数据集的 GMM 中获取条件 GMM。 @TomG 嗨,汤姆,您找到问题的解决方案了吗?接受的答案对我不起作用。 【参考方案1】:尝试查看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”作为变量名,导致它崩溃。 在文档中给出的示例中,设置“max_iter = 400”而不是“iter = 400”和“iter_call = None”。如果你想跟踪你的 EM 算法的进度,你可以修改 plot 函数。 谢谢!这和其他一些问题(例如,一些记录在案的功能仅在 SVN 中,而不是在最新下载中),我已经让它工作了! 如果您觉得有帮助,请采纳答案。 :) 对不起,我在这里是个菜鸟 - 我不得不查找如何接受答案。以上是关于使用 scikit-learn.mixture.GMM 寻找条件高斯混合模型的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)