在使用我的数据集时,我注意到Excel趋势线拟合给出的结果与python中的curve_fit有很大不同:
Excel指数趋势线给出了以下方程y= 0.00002178exp(0.53759216x),其中a= 0.00002178,b= 0.53759216
Python curve_fit (无约束)结果为a= 0.19807362,b= 0.25736161
绘制时,Python解决方案似乎不如Excel准确
下面是我的代码:
df = pd.read_excel(path)
def func(x, a, b):
return a*np.exp(x*b)
popt, pcov = curve_fit(func, df['x'].values, df['y'].values)如果能帮助我们理解为什么Excel和Python在这种情况下会有很大的不同,我会非常感激的。
以下是指向数据集https://www.4shared.com/office/VQUrwRG0iq/New_Microsoft_Excel_Worksheet.html的链接
电话: 27.7 28.1 25.2 27.6 25.7 27.0 25.1 25.5 30.7 27.4 23.6 28.8 28.5 20.3 16.6 22.4 35.2 30.1 28.0 26.3 21.8 23.3 22.1 21.6 22.4 21.5 29.4 35.7 33.5 25.5 29.8 19.5 21.6 22.5 23.5 32.3 29.6 22.422.1 21.7 21.3 25.5 25.3 31.3 34.7 35.9 33.4 23.8 21.9 20.1 21.8
y: 950 1050 110 75 28 35 22 14 400 80 38 315 610 0.6 0.2 9.8 630 330 280 65 2.7 9.6 2.3 2.7 1.7 1.7 280 490 265 19 120 1 1.3 2.2 4.5 195 230 1.3 1.1 1 2.1 6 39 2170 1230 4150 2340 4.5 1.4 0.7
发布于 2019-10-15 17:04:44
数据非常分散。因此,如果拟合的标准不同,回归结果会有很大的不同。
如果我们寻找最小均方相对误差,我们会得到Excel结果。很可能拟合的方程是
ln(y)=ln(a)+bx
RMS相对误差= 1.11;RMS绝对误差= 348
如果我们寻找最小均方绝对误差,我们会得到Python结果。很可能拟合的方程是
y=a.exp(bx)
RMS相对误差= 18.5;RMS绝对误差= 280
在图形表示上,主观上平均相对误差比绝对误差表现得更好。
如果你想用Python得到一些接近Excel的东西,你应该将拟合的标准指定为相对误差而不是绝对误差。

https://stackoverflow.com/questions/58384760
复制相似问题