2017-02-20 9 views
0

ガウス混合モデルをプロットしたいと思います。次のコードでは2つの別々のガウス分布をプロットすることができますが、交差する場所では線が非常に鋭く、十分に滑らかではありません。 1D GMMのpdfをプロットする方法はありますか?matplotlibを使って1次元ガウス混合モデルのpdfをプロットする方法

def plot_data(): 
    mu = [-6, 5] 
    var = [2, 3] 
    sigma = [np.sqrt(var[0]), np.sqrt(var[1])] 
    x = np.linspace(-10, 10, 100) 
    curve_0 = mlab.normpdf(x, mu[0], sigma[0]) 
    curve_1 = mlab.normpdf(x, mu[1], sigma[1]) 
    import ipdb; ipdb.set_trace() 
    plt.plot(x, curve_0, color='grey') 
    plt.plot(x, curve_1, color='grey') 
    plt.fill_between(x,curve_0 , color='grey') 
    plt.fill_between(x,curve_1, color='grey') 
    plt.show() 
    plt.savefig('data_t0.jpg') 
+0

あなたが最初のガウス混合の方法を確率密度関数を知りたいことモデルは次のようになります:) – cel

答えて

0

あなたは密度の凸結合を形成する必要があります。 Pは、サンプルが最初にガウスから来る確率で

curve = p*curve_0 + (1-p)*curve_1 

あなたは文字通り、ガウス混合モデルからサンプルを引き出し、あまりにも経験的密度/ヒストグラムをプロットすることができ
1

import matplotlib.pyplot as plt 
import numpy as np 
import seaborn as sns 
n = 10000 # number of sample to be drawn 
mu = [-6, 5] 
sigma = [2, 3] 
samples = [] 
for i in range(n): # iteratively draw samples 
    Z = np.random.choice([0,1]) # latent variable 
    samples.append(np.random.normal(mu[Z], sigma[Z], 1)) 
sns.distplot(samples, hist=False) 
plt.show() 
sns.distplot(samples) 
plt.show() 

enter image description here

関連する問題