如何在Python中使用参数构建和绘制单变量高斯混合模型

0 投票
1 回答
2005 浏览
提问于 2025-04-18 14:12

我想在Python中构建一个一维的高斯混合模型,里面有三个成分。我已经有了这些成分的参数,比如均值(mu)、标准差(sigma)和混合系数。

在MATLAB中有类似的功能,比如可以用gmdistribution(mu,sigma,p)来实现。

我觉得代码大概应该是这样的:

from numpy import *
from matplotlib.pylab import *
from sklearn import mixture

gmm = mixture.GMM(n_components=3)
gmm.means_ = np.array([[-1], [0], [3]])
gmm.covars_ = np.array([[1.5], [1], [0.5]]) ** 2
gmm.weights_ = np.array([0.3, 0.5, 0.2])
fig = plt.figure(figsize=(5, 1.7))

ax = fig.add_subplot(131)
#ax.plot(gmm, '-k') 

我在想怎么做这个……

谢谢!

1 个回答

0

假设这些高斯分布是独立的,如果你想画出概率密度函数(pdf),你只需要把这些高斯分布的概率密度函数按照它们的概率进行加权组合就可以了:

import numpy as np
import scipy.stats as ss
import matplotlib.pyplot as plt

means = -1., 0., 3.
stdevs = 1.5, 1., 0.5
weights = 0.3, 0.5, 0.2

x = np.arange(-5., 5., 0.01)

pdfs = [p * ss.norm.pdf(x, mu, sd) for mu, sd, p in zip(means, stdevs, weights)]

density = np.sum(np.array(pdfs), axis=0)
plt.plot(x, density)

要证明这个是正确的,需要一点基础的概率理论知识。

撰写回答