You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

scipy 1.7.3中curve_fit是否仍有maxfev参数?如何控制迭代次数?

Scipy 1.7.3中curve_fit的maxfev参数问题解答

1. maxfev参数是否还存在?

在Scipy 1.7.3版本里,curve_fit不再直接接收maxfev作为独立参数,但这个参数并没有被移除——它被移到了底层优化器的options配置字典里。

2. 参数被忽略的原因及调整时间

从Scipy 1.4.0版本开始,curve_fit的API做了调整,原来直接传入的maxfev被整合进了options参数里。如果现在仍把maxfev当独立参数传,会被函数忽略,因为当前版本的curve_fit签名里已经没有这个参数了。在Scipy 1.3.x及更早版本中,maxfev是curve_fit的直接参数。

3. 当前版本控制拟合迭代次数的正确方法

在Scipy 1.7.3中,需要通过options字典把maxfev传给默认的Levenberg-Marquardt优化器,示例代码如下:

from scipy.optimize import curve_fit
import numpy as np

# 定义拟合函数
def fit_func(x, a, b):
    return a * np.exp(-b * x)

# 生成模拟数据
x_data = np.linspace(0, 4, 50)
y_data = fit_func(x_data, 2.5, 1.3) + 0.2 * np.random.normal(size=len(x_data))

# 通过options传递maxfev,设置为5000次
params, cov_matrix = curve_fit(fit_func, x_data, y_data, options={"maxfev": 5000})

如果使用trf或dogbox这类其他优化器,需要在options里用对应的参数控制迭代次数:

  • 用trf时:配置max_nfev参数
  • 用dogbox时:同样配置max_nfev参数

示例(使用trf优化器):

params, cov_matrix = curve_fit(fit_func, x_data, y_data, method="trf", options={"max_nfev": 5000})

参考内容翻译

Stack Overflow相关问题

Scipy curvefit运行时错误:未找到最优参数:函数调用次数已达maxfev=1000
该问题讨论了曲线拟合时,函数调用次数触达默认maxfev限制后报错的情况,用户询问如何调整这个限制以完成拟合。

GitHub Issue #6340

这个议题围绕Scipy的curve_fit参数重构展开,核心是把原来的独立参数(比如maxfev)迁移到options字典中,统一优化器参数的传递方式,让API更一致、扩展性更好。

内容的提问来源于stack exchange,提问作者peter.petrov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 04:48:30