曲线拟合2个输入变量

时间:2014-07-14 18:19:42

标签: python scipy curve-fitting curve

使用scipy.optimize.curve_fit我试图获得最佳拟合函数og 2测量数据系列到第三个测量数据系列,如f(x,y)= z,其中x,y,z是测量的系列。

代码如下:

def func_events_model(xy,a,b,c):
 return a*xy[0]+b*xy[1]+c
events_array=numpy.array(events_list)
Tin_array=numpy.array(Tin_list)
barometer_array=numpy.array(barometer_list)
events_array=events_array.reshape(720,1)
Tin_barometer_array=numpy.array([[Tin_list],[barometer_list]])
Tin_barometer_array=Tin_barometer_array.T
popt_model,stats_model=curve_fit(func_events_model,Tin_barometer_array,events_array)

我收到此错误消息:

Traceback (most recent call last):
  File "DUKS_dataplot.py", line 100, in <module>
    popt_model,stats_model=curve_fit(func_events_model,Tin_barometer_array,events_array)
  File "/usr/lib/python2.7/dist-packages/scipy/optimize/minpack.py", line 506, in curve_fit
    res = leastsq(func, p0, args=args, full_output=1, **kw)
  File "/usr/lib/python2.7/dist-packages/scipy/optimize/minpack.py", line 355, in leastsq
    gtol, maxfev, epsfcn, factor, diag)
minpack.error: Result from function call is not a proper array of floats.

有任何想法来处理这个问题吗?或者找到最佳拟合f(x,y)= z?

的更好方法

scipy.optimize.curve_fit的文档指出独立输入可能有多个维度。

2 个答案:

答案 0 :(得分:1)

将功能定义更改为:

def func_events_model(xy,a,b,c):
 return a*xy[0]+b*xy[1]+c

做了这个伎俩。

答案 1 :(得分:0)

如果您的初衷是将xy中的两个项目分成不同的参数,那么您可以这样做:

func_events_model(*the_list, a, b, c)

这将转化为:

func_events_model(the_list[0], the_list[1], a, b, c)