首页 > 解决方案 > 用附加函数拟合多项式

问题描述

假设我有一个名为的数组Y和另一个名为X. 我知道如何使用numpy.polyfit()和作为输出来拟合多项式,我将得到一个带有系数的数组。但是如果我想添加一些函数f(x)作为多项式的附加回归量,我该如何在 python 中做到这一点?

例如Y = [1,2,3,4,5,6]X = [101,102,103,104,105,106]。我知道如何估计y = a_0+a_1x+a_2x^2+a_3x^3(3 阶多项式)的系数,我可以使用z = numpy.polyfit(Y, X, 3). 现在,我想估计一些功能y = a_0+a_1x+a_2x^2+a_3x^3 + a_4f(x)在哪里。f(x)我是 Python 新手,在 Google 上找不到答案

标签: pythonregression

解决方案


scipy.optimize.curve_fit就是你要找的。它可以采用任意函数,因此您可以在该函数中定义多项式项和额外函数项。

def f(x, a0, a1, a2, a3, a4):
  func_term = np.exp(-abs(x))  # can be anything you need
  return a0 + a1 * x + a2 * x**2 + a3 * x**3 + a4 * func_term

然后拟合曲线:

popt, _ = curve_fit(f, xdata, ydata)

推荐阅读