如何使用Python中的参数构造和绘制单变量高斯混合

如何使用Python中的参数构造和绘制单变量高斯混合,python,gaussian,mixture-model,Python,Gaussian,Mixture Model,我想在Python中构造并1D绘制一个单变量高斯混合,其中包含三个组件,我已经有了它的参数,包括mu、sigma、mix系数 我所追求的在MATLAB中有一个等价物,即gmdistributionmu、sigma、p 我认为代码应该是这样的: from numpy import * from matplotlib.pylab import * from sklearn import mixture gmm = mixture.GMM(n_components=3) gmm.means_ = n

我想在Python中构造并1D绘制一个单变量高斯混合,其中包含三个组件,我已经有了它的参数,包括mu、sigma、mix系数

我所追求的在MATLAB中有一个等价物,即gmdistributionmu、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') 
想知道怎么做


干杯

假设高斯函数是独立的,并且您想要绘制pdf,您可以只组合由概率加权的基本高斯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)

这是正确的,需要一点基本的概率论。

太好了!如何确定高斯数是独立的?如果不是,pdf计算会发生什么?如果你将其拟合为单变量数据,那么我们只需假设高斯函数是独立的,否则问题就被过度确定了。当然,在状态空间建模的情况下,你可能会假设非零相关性,但这并不典型。谢谢@stochasticfish