0

適合させたい 2 つのガウス分布があります。2 つのディストリビューションは異なる方法で混在させることができるため、適合性をできるだけ普遍的なものにしたかったのです。ここで以下のコードを見つけました:

Python のヒストグラム データへのガウス フィット: Trust Region v/s Levenberg Marquardt - 最初の回答。

ただし、私のデータまたは以下のコードで生成された元のデータでは機能せず、エラーが吐き出されます。

ValueError: GMM estimation with 2 components, but got only 1 samples

私はそれが単純なものであることを望んでいます。私のデータは、ヒストグラム、時間対振幅をプロットする単純な 2D 配列です。

import numpy as np
from sklearn import mixture
import matplotlib.pyplot as plt

comp0 = np.random.randn(1000) - 5 # samples of the 1st component
comp1 = np.random.randn(1000) + 5 # samples of the 2nd component

x = np.hstack((comp0, comp1)) # merge them

gmm = mixture.GMM(n_components=2) # gmm for two components
gmm.fit(x) # train it!

linspace = np.linspace(-10, 10, 1000)

fig, ax1 = plt.subplots()
ax2 = ax1.twinx()

ax1.hist(x, 100) # draw samples
ax2.plot(linspace, np.exp(gmm.score_samples(linspace)[0]), 'r') 
plt.show()
4

1 に答える 1

1

使用する:

x = np.vstack((comp0, comp1))

それ以外のhstack

各行はサンプルを表し、各列はサンプルの機能を表す必要があるためです。

于 2015-12-03T17:33:58.000 に答える