【发布时间】:2020-01-11 12:41:18
【问题描述】:
我有一些数据{x_i,y_i},我想拟合一个模型函数y=f(x,a,b,c),以找到参数(a,b,c)的最佳拟合值;然而,它们三个并不是完全独立的,而是受限于1<b、0<=c<1 和g(a,b,c)>0,其中g 是一个“好”函数。我如何在 Python 中实现这一点,因为使用 curve_fit 不能直接放置参数约束?
我一直在阅读 lmfit,但我只看到像 1<b, 0<=c<1 这样的数字约束,而没有看到 g(a,b,c)>0 的约束,这是最重要的。
【问题讨论】:
-
docs.scipy.org/doc/scipy/reference/generated/… 处的 curve_fit() 的 scipy 文档有关于 bounds 参数的讨论和示例。
-
可以使用
lmfit中基于表达式的约束机制来处理g(a, b, c) > 0约束,具体取决于函数g()的作用。你必须提供一个更具体的例子。 -
那么
f(x,a,b,c)在1<b , 0<=c<1附近看起来像什么?它有多非线性?告诉我们一个线性化的近似。您可能必须对您的区域和约束进行分段建模。 -
f(x,a,b,c) 包含 Gamma 和超几何函数,所以不容易线性化...
标签: python curve-fitting non-linear-regression