【笔记】curve_fit中设置限制条件的两种方法

curve_fit中设置限制条件的两种方法


直接翻译, 相关链接

“bounds”参数

简单限制条件,简单限制参数范围。以下为机翻内容:

对拟合参数施加约束的一种简单方法是为每个参数定义上限和下限。这可以使用curve_filt中的bounds参数来实现。让我们考虑一个示例,其中我们希望将param1的值限制在0和1之间:

bounds = ([0], [1])
params, params_covariance = curve_fit(func, x_data, y_data, p0=[initial_guess], bounds=bounds)

通过将下限设置为0,将上限设置为1,我们可以确保param1的拟合值在指定范围内。

限制函数(已被逆向更新,已无效)

复杂限制条件,通过函数限制参数范围。以下为机翻内容:

在某些情况下,简单的边界可能不够,我们需要更复杂的约束。SciPy提供了约束模块,它允许我们定义自定义约束函数。这些函数指定参数必须满足的条件。
假设我们有一个约束,param1+param2必须小于或等于10。我们可以定义一个约束函数如下:

from scipy.optimize import NonlinearConstraint

def constraint(params):
    param1, param2 = params
    return param1 + param2 - 10

# Create the constraint object
nonlinear_constraint = NonlinearConstraint(constraint, -np.inf, 0)

# Perform the curve fitting with the constraint
params, params_covariance = curve_fit(func, x_data, y_data, p0=[initial_guess1, initial_guess2], constraints=nonlinear_constraint)

在这里,我们定义了以参数为输入并返回约束方程值的约束函数。非线性约束对象是使用约束函数、下限(在这种情况下为-np.inf)和上限(在这种情形下为0)创建的。最后,我们使用constraints参数将constraint对象传递给curve_filt。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值