【发布时间】:2012-06-28 18:17:10
【问题描述】:
我正在尝试创建一个函数,该函数将根据传入的 lambda 函数进行最小二乘拟合。我想创建一个长度为零的数组,该数组的长度等于 lambda 函数为初始猜测 lambda 函数所采用的参数数量。因此,如果它是线性的,我想要 [0,0],而对于二次我想要 [0,0,0]。
#polynomial functions
linear = lambda p, x: p[0] * x + p[1]
quadratic = lambda p, x: p[0] * x**2 + p[1] * x + p[2]
cubic = lambda p, x: p[0] * x**3 + p[1] * x**2 + p[2] * x + p[3]
#polynomial functions forced through 0
linear_zero = lambda p, x: p[0] * x
quadratic_zero = lambda p, x: p[0] * x**2 + p[1] * x
cubic_zero = lambda p, x: p[0] * x**3 + p[1] * x**2 + p[2] * x
def linFit(x, y,fitfunc):
errfunc = lambda p, x, y: fitfunc(p, x) - y
在这里我想创建一个零数组。但此时 p 尚未定义。所以 len(p) 不起作用。
init_p = np.array(zeros(len(p))) #bundle initial values in initial parameters
p1, success = optimize.leastsq(errfunc, init_p.copy(), args = (x, y))
return p1
【问题讨论】:
标签: python numpy scipy least-squares