[英]Restricting values for curve_fit (scipy.optimize)
我正在尝试使用curve_fit使用以下函数作为输入,使逻辑增长曲线适合我的数据。
def logistic(x, y0, k, d, a, b):
if b > 0 and a > 0:
y = (k * pow(1 + np.exp(d - (a * b * x) ), (-1/b) )) + y0
elif b >= -1 or b < 0 or a < 0:
y = (k * pow(1 - np.exp(d - (a * b * x) ), (-1/b) )) + y0
return y
正如您所看到的,我正在使用的函数对参数a和b可接受的值有一些限制。 有关如何处理错误值的任何猜测? 输入函数是应该引发异常还是返回虚拟值? 提前致谢。
当参数超出允许范围时,返回一个非常大的数字(远离要安装的数据)。 这将(希望)惩罚这些参数的选择,以至于curve_fit
将在一些其他可接受的参数集上达到最佳:
def logistic(x, y0, k, d, a, b):
if b > 0 and a > 0:
y = (k * pow(1 + np.exp(d - (a * b * x) ), (-1/b) )) + y0
elif b >= -1 or b < 0 or a < 0:
y = (k * pow(1 - np.exp(d - (a * b * x) ), (-1/b) )) + y0
else:
y = 1e10
return y
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.