适合非多项式曲线而无需猜测

问题描述 投票:1回答:1

我想拟合图像中显示的曲线(蓝色),但是多项式拟合不可行(我尝试了5阶),可能是因为它是对数对数,或者可能是因为数据不起作用就像多项式。

enter image description here

我不知道曲线的数学形式是什么,因此我无法猜测它是某个曲线,然后对其应用最小二乘。我想告诉python用它找到的最佳曲线拟合它,例如像我在Origin8中所做的那样,拟合曲线应该是这样的]

enter image description here

我以前适合的代码是,使用

numpy as np and matplotlib.pyplot as plt:
fit=np.polyfit(temperatures,deltas1,5)
yfit=[(fit[0]*(x**5)+fit[1]*(x**4)+fit[2]*(x**3)+fit[3]*(x**2)+fit[4]*x+fit[5])
      for x in temperatures]
plt.plot(temperatures,yfit,"--")

其中温度是x变量。

python matplotlib curve-fitting data-fitting
1个回答
0
投票

您提供的信息量相对稀疏,这很难。首先,我不明白为什么您期望能够将看起来像指数数据的多项式拟合。如果确定要进行多项式拟合,则可以通过样条曲线获得更好的拟合(样条曲线是各种阶数的分段多项式)。 Scipy有一个很好的实现,很容易尝试:https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.UnivariateSpline.html,如果使用大量的节和二阶多项式,则可能会做得相当不错,尽管过度拟合过度。另一种(可能更好)的选择将适合某种指数函数https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html。您所提供的信息很难提供更好的建议。什么是基础数据?很抱歉,我以评论而不是评论的形式提交了该评论(我本来只是以评论的形式提交,但我的声誉不高)。

© www.soinside.com 2019 - 2024. All rights reserved.