6
我在Python中有一組數據。我將其繪製爲直方圖,該圖顯示雙峯分佈,因此我試圖在雙峯中的每個峯上繪製兩個高斯輪廓。從一組數據中擬合兩個高斯到一個直方圖python
如果我使用下面的代碼是需要我有兩個相同大小的數據集。但是我只有一個數據集,並且這不能平分。我怎樣才能適應這兩個高斯
from sklearn import mixture
import matplotlib.pyplot
import matplotlib.mlab
import numpy as np
clf = mixture.GMM(n_components=2, covariance_type='full')
clf.fit(yourdata)
m1, m2 = clf.means_
w1, w2 = clf.weights_
c1, c2 = clf.covars_
histdist = matplotlib.pyplot.hist(yourdata, 100, normed=True)
plotgauss1 = lambda x: plot(x,w1*matplotlib.mlab.normpdf(x,m1,np.sqrt(c1))[0], linewidth=3)
plotgauss2 = lambda x: plot(x,w2*matplotlib.mlab.normpdf(x,m2,np.sqrt(c2))[0], linewidth=3)
plotgauss1(histdist[1])
plotgauss2(histdist[1])