动态创建SciPy curve_fit函数

问题描述

这里是菜鸟。

我正在scipy.optimize.curve_fit周围创建包装,以进行多变量回归。 我能够成功运行带有两个或三个自变量的原始版本-

两个自变量-

def fn(x,a,b1,b2):
    return a + b1*x[0] + b2*x[1]

popt,pcov = curve_fit(fn,x,y)  

三个自变量-

def fn(x,b2,b3):
    return a + b1*x[0] + b2*x[1] + b3*x[2]

popt,y)  

问题是,我不知道输入中将有多少个自变量,并且我不想手动遍历函数定义的所有排列,我也不认为这是最佳实践。因此,问题是如何根据输入数据帧在此处动态创建函数fn

解决方法

这不是一个非常优雅的解决方案,但是您始终可以使用exec命令like this从字符串生成Python代码。然后,您可以为函数定义动态生成字符串,并使用exec实际创建函数。