J'ai le code qui tire d'une gaussienne 1D:Comment trouver la bonne courbe gaussienne avec des données?
import numpy as np
from scipy.stats import norm
from scipy.optimize import curve_fit
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
import gauss
# Beginning in one dimension:
mean = 0; Var = 1; N = 1000
scatter = np.random.normal(mean,np.sqrt(Var),N)
scatter = np.sort(scatter)
mu,sigma = norm.fit(scatter)
Je mu et sigma obtenir l'aide norm.fit()
Maintenant, je voudrais obtenir mes paramètres en utilisant
xdata = np.linspace(-5,5,N)
pop, pcov = curve_fit(gauss.gauss_1d,xdata,scatter)
Le problème est que je ne sais pas comment mapper mes points épars (tirés d'un gaussien 1D) à la ligne x afin d'utiliser curve_fit. En outre, supposons que j'utilise simplement et mu et sigma comme précédemment.
Je intrigue en utilisant:
n, bins, patches = plt.hist(scatter,50,facecolor='green')
y = 2*max(n)*mlab.normpdf(bins,mu,sigma)
l = plt.plot(bins,y,'r--')
plt.xlabel('x-coord')
plt.ylabel('Occurrences')
plt.grid(True)
plt.show()
Mais je dois deviner l'amplitude 2 * max (n). Cela fonctionne mais ce n'est pas robuste. Comment puis-je trouver l'amplitude sans deviner?