【问题标题】:Python: How to fit a mixture of a von Mises Distribution?Python:如何拟合 von Mises 分布的混合?
【发布时间】:2016-11-23 01:48:12
【问题描述】:

我有一个角度分布,我想将 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 和相关包)。

【问题讨论】:

  • 您要对多少个 von Mises 分布求和?是固定数字吗?
  • @DavisHerring 10 以内
  • 嗯,你几乎总是会得到一个更好的拟合(并且总是至少一样好)有更多的基函数,所以“10以内”只是意味着10。
  • @DavisHerring 拟合优度不是唯一的考虑因素。我还考虑了交叉验证效应。所以在我的研究中,实际范围在3-6之间。使用更多组件,结果只会稍微好一些。
  • 相关:scipy 中的混合模型 - stackoverflow.com/questions/47759577/…

标签: python scipy statistics


【解决方案1】:

我实现了一个算法来解决类似的问题,请参阅

https://framagit.org/fraschelle/mixture-of-von-mises-distributions

了解详情。

从一个随机样本(一维numpy.array)开始,它应用expectation-maximization algorithm根据von-Mises分布对数据进行分类。

该算法允许任何 von-Mises 分布的叠加(尽管mathematics associated with the algorithm(链接到 pdf)只描述了两个分布的叠加,它很容易概括),而且它的速度和我能做的一样快.它只依赖Numpy和scipy.specialiv函数,调用修改后的Bessel函数。

mixture_mises_pdfit 返回每个分布的权重,以及 $\mu$ 和 $\kappa$ 参数,参见例如Wikipedia page on von Mises distribution

添加代码的真实分类结果会很好,以便允许对周期性数据进行分类。最终,对 Scikit-learn 的扩展也应该是可行的,尽管它需要更多的时间来实现。

【讨论】:

  • 链接无效。如果你为你的工作创建一个 GitHub 存储库,那就太好了:)
  • @Yashas 抱歉,我在 framagit 更改了我的帐户名。该链接现在有效。如果没有,请告诉我,并感谢您指出我的这个错误。
  • 非常感谢您。我打算使用您的部分解决方案写一篇论文,我想知道如何正确引用它。
猜你喜欢
  • 2016-12-25
  • 1970-01-01
  • 2019-06-28
  • 2021-07-20
  • 1970-01-01
  • 2020-12-06
  • 2016-09-20
  • 2016-04-17
  • 2018-11-14
相关资源
最近更新 更多