【发布时间】:2016-03-12 05:49:27
【问题描述】:
我有一个拟合函数,其形式为:
def fit_func(x_data, a, b, c, N)
其中 a, b, c 是第 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 并具有我希望的将列表元素视为单个参数的行为吗?假设答案是肯定的,那么我的函数调用做错了什么?
【问题讨论】:
-
我认为documentation 可以帮助你,它不可能开箱即用。
-
我做过 RTFM - 但作为一个新手程序员,我希望我可能会错过一个技巧。
-
哈哈,kk,这也不是专业人士,但是你的 lambda 参数的可变数量呢,如here?
-
我认为这里的问题是 curve_fit() 不知道如何改变不是简单数值参数的参数。虽然看起来我可以绕过curve_fit并直接使用leastsq,因为它在残差函数中接受任意长度的参数元组。
-
完成,抱歉耽搁了
标签: python-2.7 scipy curve-fitting