我想拟合图像中显示的曲线(蓝色),但是多项式拟合不可行(我尝试了5阶),可能是因为它是对数对数,或者可能是因为数据不起作用就像多项式。
我不知道曲线的数学形式是什么,因此我无法猜测它是某个曲线,然后对其应用最小二乘。我想告诉python用它找到的最佳曲线拟合它,例如像我在Origin8中所做的那样,拟合曲线应该是这样的]
我以前适合的代码是,使用
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变量。
您提供的信息量相对稀疏,这很难。首先,我不明白为什么您期望能够将看起来像指数数据的多项式拟合。如果确定要进行多项式拟合,则可以通过样条曲线获得更好的拟合(样条曲线是各种阶数的分段多项式)。 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。您所提供的信息很难提供更好的建议。什么是基础数据?很抱歉,我以评论而不是评论的形式提交了该评论(我本来只是以评论的形式提交,但我的声誉不高)。