Я не знаком, что, как определить функцию подгонки? Но, взглянув на тенденцию точек данных, я выбрал распределение Пуассона в качестве своей подходящей функции. Зеленая кривая довольно гладкая, но подходящая кривая находится далеко от первой точки данных, имеющей положение (0,0,55). Я хочу получить плавную кривую, используя функцию подгонки, потому что она далека от моих фактических данных. Я пытался увеличить количество бинов, но все еще получал тот же тип кривой. Я сомневаюсь, что, может быть, я не выбираю правильную функцию подгонки или, может быть, я что-то упускаю?
`def Poisson_fit(x,a):
return (a*np.exp(-x))
def Poisson(x):
return (np.exp(-x))
x_data =np.linspace(0,5,10)
print("x_data: ",x_data)
[0.,0.55555556, 1.11111111, 1.66666667, 2.22222222, 2.77777778, 3.33333333,
3.88888889, 4.44444444, 5.]
hist, bin_edges= np.histogram(x, bins=10, density=True)
print("hist: ",hist)
#hist:[5.41041394e-01,1.42611032e-01,3.44975130e-02,7.60221121e-03,
1.66115522e-03,3.26808028e-04,6.70741368e-05,1.14168743e-05,5.70843717e-06,
1.42710929e-06]
plt.scatter(x_data, hist,marker='o',color='red')
popt, pcov = optimize.curve_fit(Poisson_fit, x_data, hist)
plt.plot(x_data, Poisson_fit(x_data,*popt), linestyle='--',
marker='.',color='red', label='Fit')
plt.plot(x_data,Poisson(x_data),marker='.',color='green',label='Poisson')`
#Second Graph(Find best fit)
На следующем графике я поместил два разных распределения по точкам данных. Для меня трудно судить, что лучше всего подходит. Должен ли я печатать ошибку на функции подбора, чтобы определить наилучшую подгонку?
`perr = np.sqrt(np.diag(pcov))`