我有一个角度分布,我希望将von Mises分布混合到那个
我该怎么做?
我在R中找到了一个实现,Fit a mixture of von Mises distributions in R
我也发现可以在Python中使用单个von Mises分布,http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.vonmises.html
我想也许我可以尝试如何拟合混合分布,因为我已经在scipy
中定义了函数?
最后,我使用rpy2
解决了这个问题。具体来说,我使用Python清理数据,并使用R软件包来训练VMM(因此需要安装R和相关的软件包)。
答案 0 :(得分:0)
我实现了解决类似问题的算法,请参见
https://framagit.org/gozat/mixture-of-von-mises-distributions
有关详细信息。
从随机样本(一维numpy.array
)开始,它应用expectation-maximization algorithm来根据von-Mises分布对数据进行分类。
该算法允许von-Mises分布的任何叠加(尽管mathematics associated with the algorithm(链接到pdf)仅描述了两个分布的叠加,很容易泛化),它的速度与I能做。它仅依赖于Numpy和iv
的{{1}}函数来调用修改后的Bessel函数。
mixed_mises_pdfit返回每个分布的权重以及$ \ mu $和$ \ kappa $参数,请参见例如Wikipedia page on von Mises distribution。
最好添加代码的真实分类结果,以便对定期数据进行分类。最终,对Scikit-learn的扩展也应该可行,尽管它需要更多的时间来实施。