python 曲线拟合参数能否为数组_Python曲线将多个参数拟合到多个数据集
我尝试使用scipy的曲线拟合函数来求解模型参数。我使用Python curve_fit with multiple independent variables作为起点,并且能够满足我的需求,但是现在我想使用两个输入数据集来派生两个数据集共享的模型参数(长期而言,我希望使用两个以上的数据集,但作为起点,我使用两个以上的数据集)。在
我想最简单的方法可能是使用曲线拟合并将数据作为矩阵输入。作为一个非常做作的例子,我尝试在上面的链接中“扩充”这个例子(我意识到这不是最漂亮的代码——我只是想知道我应该如何做)。在def func(X, a, b, c):
x,y = X
result0 = np.log(a) + b*np.log(x[0]) + c*np.log(y[0])
result1 = np.log(a) + b*np.log(x[1]) + c*np.log(y[1])
return np.array([result0, result1])
# some artificially noisy data to fit
x0 = np.linspace(0.1,1.1,101)
y0 = np.linspace(1.,2., 101)
x1 = np.linspace(0.1,1.1,101)
y1 = np.linspace(1.,2., 101)
a, b, c = 10., 4., 6.
x = np.array([x0,x1])
y = np.array([y0,y1])
z = func((x,y), a, b, c)
z[0] = z[0] * 1 + np.random.random(101)/100
z[1] = z[1] * 1 + np.random.random(101)/100
# initial guesses for a,b,c:
p0 = 8., 2., 7.
print curve_fit(func, (x,y), z, p0)
此脚本返回以下错误:File "curveFitting.py", line 135, in
print curve_fit(func, (x,y), z, p0)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/scipy/optimize/minpack.py", line 533, in curve_fit
res = leastsq(func, p0, args=args, full_output=1, **kw)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/scipy/optimize/minpack.py", line 371, in leastsq
raise TypeError('Improper input: N=%s must not exceed M=%s' % (n, m))
TypeError: Improper input: N=3 must not exceed M=2
我是否试图以一种无意/不恰当的方式使用曲线拟合?我是否应该使用其他函数/库?在