据我所知,Scipy curve_fit
函数显式接受拟合参数。例如,在拟合多项式时:
def func(x, c0, c1, c2):
return c0 + c1 * x + c2 * x**2
有没有一种方法(也许是另一个等效函数)通过向量定义参数?例如:
def func(x, C):
y = 0.0
for i, ci in enumerate(C):
y += ci * x**i
return y
我试图用 24 个参数拟合一个复杂的函数,显式定义参数相当痛苦。
最佳答案
是的,这是可能的,但您必须事先知道参数的数量(您似乎知道)。
例子:
from scipy.optimize import curve_fit
def func(x, *C):
y = sum(c * x ** n for n, c in enumerate(C))
return y
但是,您需要在调用curve_fit
时指定p0
参数;在本例中,由于您知道有 24 个参数,如果您对它们的值有初步猜测,则可以传递一个包含 24 个值的数组。如果没有,您可以使用 np.ones(24)
。
关于python - Scipy 拟合向量中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55132107/