Scipy拟合中的参数向量化

3
据我所知,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个参数的复杂函数,明确定义参数非常痛苦。

翻译结果:

我试图用24个参数来拟合一个复杂的函数,但是明确地定义这些参数非常困难。

1个回答

2

是的,这是可能的,但您必须事先知道参数的数量(似乎您已经知道了)。

例子:

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)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接