title: Fit mixture of two gaussian/normal distributions to a histogram from one set of data, python
body: <p>I have one set of data in python. I am plotting this as a histogram, this plot shows a bimodal distribution, therefore I am trying to plot two gaussian profiles over each peak in the bimodality.</p>
  
  <p>If i use the code below is requires me to have two datasets with the same size. however I just have one dataset, and this cannot be divided equally. How can I fit these two gaussians</p>
  
  <pre><code>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])
  </code></pre>