首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么curve_fit返回的结果与Excel Trendline有很大不同?

为什么curve_fit返回的结果与Excel Trendline有很大不同?
EN

Stack Overflow用户
提问于 2019-10-15 06:22:07
回答 1查看 216关注 0票数 1

在使用我的数据集时,我注意到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准确

下面是我的代码:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 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的东西,你应该将拟合的标准指定为相对误差而不是绝对误差。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58384760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档