为什么曲线拟合功能不能合并所有数据点。如何获得最佳身材?

时间:2019-07-06 15:26:12

标签: matplotlib scipy

我不熟悉如何确定拟合函数?但是,通过查看数据点的趋势,我选择了泊松分布作为拟合函数。绿色曲线相当平滑,但拟合曲线距离位置为(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')`

enter image description here

#Second Graph(Find best fit)

在下图中,我在数据点上拟合了两种不同的分布。对我来说,很难判断哪个最合适。我应该在拟合函数上打印错误以判断最佳拟合吗?

`perr = np.sqrt(np.diag(pcov))`

enter image description here

1 个答案:

答案 0 :(得分:0)

如果所有数据点都需要与插值拟合重合,则可以使用样条线(例如cubic splines),通常产生合理的平滑拟合(仅通常< / em>,因为“合理平滑”取决于数据和应用程序。

示例:

example.com/music/static/sample.mp4

Cubic spline fit