Python:查找任意曲线的拟合参数数量

时间:2018-11-27 13:04:31

标签: python scipy curve-fitting

有没有一种方法可以返回任意函数在其他文件中定义的参数数量?我已经尝试在检查中使用Signature类,如下所示:

from foo import func1, func2, func3
from inspect import signature
from scipy.optimize import curve_fit

func_list = [ func1, func2, func3 ]

n, bins, patches = hist( array )

for f in func_list:
    sig = signature(f)
    args = sig.parameters['args']

    p = np.ones( len(args) )

    params = curve_fit( f, bins[1:], n, p0 = p )
    print(params[0])

但是,从我所见,这并不能满足我的签名要求,只能用于本地用户定义的函数。

问题出在这里是我在一个类中有一个测试函数(修改后的高斯函数),该函数接受一个必需参数(输入数组)和三个拟合参数:

def _pdf( self, x, a, b, c ):
    return np.sqrt(a) * ( np.exp(-(b*x)**2 / c ) / np.sqrt(2.0 * np.pi) )

在上述示例中,我希望len( params[0] )的值为3。

np.ones的初始化是任意的(据我所知,不声明p0会使所有参数的个数都猜为1),但是我将来会修改此数组。现在,我只需要能够手动确定p0的长度即可。

上下文:我想使用scipy拟合一些曲线参数,但是在用户加载它们之前,我不知道每条曲线将具有多少拟合参数。

有什么想法吗?谢谢

0 个答案:

没有答案