Optimization 大型数据集的曲线拟合

Optimization 大型数据集的曲线拟合,optimization,numpy,scipy,curve-fitting,Optimization,Numpy,Scipy,Curve Fitting,现在,我正试图将一条曲线拟合到一大组数据中;有两个数组,x和y,每个数组有352个元素。我对数据拟合了一个多项式,效果很好: import numpy as np import matplotlib.pyplot as plt coeff=np.polyfit(x, y, 20) coeff=np.polyfit(x, y, 20) poly=np.poly1d(coeff) 但我需要一个更精确的优化曲线,所以我一直在尝试用scipy拟合曲线。以下是我目前掌握的代码: import numpy

现在,我正试图将一条曲线拟合到一大组数据中;有两个数组,x和y,每个数组有352个元素。我对数据拟合了一个多项式,效果很好:

import numpy as np
import matplotlib.pyplot as plt
coeff=np.polyfit(x, y, 20)
coeff=np.polyfit(x, y, 20)
poly=np.poly1d(coeff)
但我需要一个更精确的优化曲线,所以我一直在尝试用scipy拟合曲线。以下是我目前掌握的代码:

import numpy as np
import scipy
from scipy import scipy.optimize as sp
coeff=np.polyfit(x, y, 20)
coeff=np.polyfit(x, y, 20)
poly=np.poly1d(coeff)
poly_y=poly(x)
def poly_func(x): return poly(x)
param=sp.curve_fit(poly_func, x, y)
但它的回报是:

ValueError: Unable to determine number of fit parameters.

我怎样才能让它工作?(或者如何将曲线拟合到此数据?

拟合函数没有意义,它不需要任何参数来拟合

曲线拟合使用非线性优化器,需要对拟合参数进行初始猜测。
如果没有给出猜测,它会尝试通过内省来确定参数的数量,而内省对您的函数来说是失败的,并将它们设置为一个(这是您几乎永远不会想要的)。

为什么您认为非线性最小二乘法会为多项式模型(这是线性的)提供更精确的结果?线性结果是最小二乘意义上的最佳拟合。使用非线性方法获得线性模型的最小二乘拟合只需要更长的时间,并且不能保证返回良好的拟合。。。除此之外,为什么要拟合20阶多项式?该模型对您的数据有意义吗?(如果是这样,出于模糊的curosity,你的数据到底是什么?)你想做样条插值,而不是让多项式模型适合你的数据吗?(也就是说,你想要的是准确地通过每个点但不适合单个数学模型的东西,还是想要找到最能再现数据的特定数学模型的参数?)?