我不熟悉如何确定拟合函数?但是,通过查看数据点的趋势,我选择了泊松分布作为拟合函数。绿色曲线相当平滑,但拟合曲线距离位置为(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))`
答案 0 :(得分:0)
如果所有数据点都需要与插值拟合重合,则可以使用样条线(例如cubic splines),通常产生合理的平滑拟合(仅通常< / em>,因为“合理平滑”取决于数据和应用程序。
示例:
example.com/music/static/sample.mp4