在Python中使用函数参数约束进行拟合

问题描述 投票:0回答:1

我有一些数据{x_i,y_i},我想拟合模型函数y=f(x,a,b,c)以找到参数(a,b,c)的最佳拟合值;但是,它们中的三个并不是完全独立的,而是对1<b0<=c<1g(a,b,c)>0的约束,其中g是“良好”函数。我如何在Python中实现这一点,因为使用curve_fit不能直接放置参数约束?

我一直在用lmfit进行阅读,但我只看到像1<b, 0<=c<1这样的数值约束,而没有看到带有g(a,b,c)>0的数值约束,这是最重要的。

python curve-fitting non-linear-regression
1个回答
0
投票

[就像詹姆斯·菲利普斯(James Phillips),我将建议SciPy的curve_fit。但是,定义函数的方式之一就是函数本身的约束,而SciPy的边界仅根据输入变量进行定义。

确切地说,您的函数形式是什么?您是否可以对它们进行转换,以便可以使用标准的边界定义,然后反转转换以所需的原始形式提供功能?

我尝试使用SciPy的curve_fit拟合指数回归时遇到了一个相关的问题。参数搜索算法以线性方式变化,并且很难建立梯度。如果我编写的函数适合我想要的函数的对数,则使curve_fit起作用要容易得多。然后,在最后的工作中,我采用了拟合函数的指数。

相同的策略可能对您有用。预测ln(y)。该函数的值可以是无界的。然后,对于最终结果,输出exp(ln(y))= y

© www.soinside.com 2019 - 2024. All rights reserved.