我正试图使用以下代码找到一条最佳拟合曲线:
popt, pcov = curve_fit(lambda t,a,b: a+b*np.log(t), data_list, noise_data, absolute_sigma=True)
返回的参数是[-51.90326506,13.77241918],即: y=-51.90326507+13.77241918*对数(x)
绘制在MatPlotLib上,结果如下所示:
然而,谷歌图表上绘制的相同方程式如下:
Results plotted on Google's graph tool
我使用下面的代码生成最佳拟合曲线:
popt, pcov = curve_fit(lambda t,a,b: a+b*np.log(t), data_list, noise_data, absolute_sigma=True)
curvex=np.linspace(min(data_list), max(data_list))
p1 = popt[0]
p2 = popt[1]
curvey=(lambda x,c,m: m*np.log(x)+c)(curvex,p1,p2)
# plot data
plt.plot(data_list,noise_data,'x',label = 'Xsaved')
plt.plot(curvex,curvey,'r', linewidth=2, label = 'Model')
为什么会存在这种差距?python是正确的还是google的地图是正确的
这是因为默认情况下google graphs使用log to the base
10
,而numpy使用log to the basee
作为默认值通过显式地将log to the base
10
与numpy一起使用,我们可以重新创建google给我们的绘图:这给了我以下情节:
相关问题 更多 >
编程相关推荐