将高斯混合模型拟合为PDF

时间:2016-10-17 18:25:21

标签: python scikit-learn

正如标题所说,我希望将高斯混合模型拟合到给定的PDF。所以,假设我知道我的数据的概率密度分布,让我们说它是这样的离散化:

import numpy as np
import matplotlib.pyplot as plt


def gaussian(gx, amp, mu, sig):
    return amp * np.exp(-np.power(gx - mu, 2.) / (2 * np.power(sig, 2.)))

x = np.linspace(-10, 10, 1000)
g1 = gaussian(gx=x, amp=2, mu=-3, sig=1)
g2 = gaussian(gx=x, amp=1, mu=4, sig=0.5)
pdf = (g1 + g2) / np.nansum(g1 + g2)

plt.scatter(x, pdf)
plt.show()

这给了我们一个很好的pdf,带有两个分离的高斯峰。现在我只想将高斯混合模型拟合到pdf中。我理解scikit的方式是你不适合模型到pdf,而是数据样本。因此,原则上我必须采用pdf,从中抽取样本然后拟合高斯混合模型,但我已经有了pdf,只想用高斯混合物描述它......

任何想法?

1 个答案:

答案 0 :(得分:0)

我想,您需要一个curve_fit,而不是sklearn GMM。应该做的一样好。但是,如果您有2个以上的高斯分布,并且它们之间没有很好地分开,则将需要很好的初始参数猜测。