【问题标题】:Restricting values for curve_fit (scipy.optimize)限制曲线拟合的值(scipy.optimize)
【发布时间】:2012-03-01 23:13:58
【问题描述】:

我正在尝试使用 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 可以接受的值有一些限制。关于如何处理错误值的任何猜测?输入函数应该引发异常还是返回一个虚拟值? 提前致谢。

【问题讨论】:

    标签: python scipy curve-fitting


    【解决方案1】:

    当参数超出允许范围时,返回一个非常大的数字(远离要拟合的数据)。这将(希望)严重惩罚这种参数选择,以至于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
    

    【讨论】:

    • 好像效果好一点,谢谢!不过我会多玩一点......
    猜你喜欢
    • 2016-06-15
    • 2016-08-20
    • 2017-02-26
    • 1970-01-01
    • 2018-11-04
    • 2016-02-12
    • 1970-01-01
    • 2021-01-19
    • 2017-03-31
    相关资源
    最近更新 更多