拟合多峰分布

2023-12-14

假设我们有两个正态分布的线性组合。我认为人们会将结果称为多模态分布.

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

ls = np.linspace(0, 60, 1000)

distribution = norm.pdf(ls, 0, 5) + norm.pdf(ls, 20, 10)
distribution = (distribution * 1000).astype(int)
distribution = distribution/distribution.sum()

plt.plot(ls, distribution)

enter image description here

正如您所看到的,我们有两个具有参数的正态分布的线性组合(mu1 = 0, s1 = 5) and (mu2 = 20, s2 = 10)。但当然,我们通常事先并不知道这些参数。

我想知道如何估计或拟合这些参数(mus 和 sigmas)。我相信有一些方法可以做到这一点,但我还没有找到。


您描述的问题是一个特殊情况高斯混合模型。为了能够估计这些参数,您需要一些样本。如果您没有样本,但给定了曲线,您可以根据曲线生成一些样本。然后你可以使用期望最大化算法来估计参数。 Scikit-learn 有一个方法可以让您做到这一点:sklearn.mixture.GaussianMixture。您只需提供您的样品、组件数量(n_components)在你的情况下是 2,以及协方差类型,这将是full在您的情况下,因为您对协方差矩阵没有事先假设。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

拟合多峰分布 的相关文章

随机推荐