我有一个拟合函数,其形式如下:
def fit_func(x_data, a, b, c, N)
其中a,b,c是lenth N的列表,其中每个条目是要在scipy.optimize.curve_fit()中优化的变量参数,N是用于循环索引控制的固定数字 .
关于this question我想我能够修复N,但我现在正在调用curve_fit,如下所示:
params_0 = [a_init, b_init, c_init]
popt, pcov = curve_fit(lambda x, a, b, c: fit_func(x, a, b, c, N), x_data, y_data, p0=params_0)
我收到一个错误:lambda()接受完全Q参数(P给出)
Q和P的变化取决于我的设置方式 .
所以:对于初学者来说,这甚至是可能的吗?我可以将列表作为参数传递给curve_fit并具有我希望的行为,其中它将列表元素视为单个参数吗?假设答案是肯定的,我的函数调用错误了吗?
1 回答
这里的解决方案是编写一个包装函数,它接受您的参数列表并将其转换为fit函数理解的变量 . 这实际上只是必要的,因为我正在使用其他人的代码,在更直接的应用程序中,这将在没有包装层的情况下工作 . 基本上
要修复N,你必须在curve_fit中调用它,如下所示:
哪里