2016-12-15 14 views
0

私はPython SciKitでGMMにこのtutorialをフォローしようとしています。元のコードはそのままでは動作しないという問題があります。入力配列の形状に問題があり、現在はGMMが廃止されているという。私はそれを書き換えるために試してみた:SciKitガウス混合モデルValueError:xとyの最初の次元が同じでなければなりません

np.random.seed(2) 
x = np.concatenate([np.random.normal(0, 2, 200), 
        np.random.normal(5, 5, 200), 
        np.random.normal(3, 0.5, 600)]) 
x = np.reshape(x, (-1, 1)) 

plt.hist(x, 80, normed=True) 
plt.xlim(-10, 20) 
clf = GaussianMixture(4, max_iter=500, random_state=3).fit(x) 
xpdf = np.linspace(-10, 20, 1000) 
xpdf = np.reshape(xpdf, (-1, 1)) 
density = np.exp(clf.score(xpdf)) 

plt.hist(x, 80, normed=True, alpha=0.5) 
plt.plot(xpdf, density, '-r') 
plt.xlim(-10, 20) 

しかし、それでもまだ、私はValueError: x and y must have same first dimensionを取得します。私が今理解できる限り、問題は配列の形からdensityの形に変わりました。しかし、私は実際に何が起こっているのか分かりません。誰もがこれについていくつかの光を発することができますか?ありがとう。

+0

GitHubによると既知のエラーのようです。彼らが提供するソリューションは、ソースコードをわずかに変更するか、または1D配列を使用しないことです。 –

+0

どのコマンドがエラーを投げていますか? –

+0

@PaulHエラーは 'plot'メソッドにあるように見え、' density'変数の形によって引き起こされます。私は何故か、または例に示されている振る舞いから何が変わったのかを知りません。 – ClonedOne

答えて

0

あなたがdensityの形状を確認した場合、問題はより明確になります。

>>> density.shape 
() 

score方法は、単に単一のスカラーである、それが渡されデータセット全体の対数尤度を返します値。 score_samplesが必要です。個々のポイントの対数尤度が得られます。

チュートリアルの作成以来、APIが変更されている可能性があります。わかりません。

関連する問題