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

使用partial命名参数结合curve_fit进行参数拟合时的异常问题排查与解决咨询

使用partial命名参数结合curve_fit进行参数拟合时的异常问题排查与解决咨询

各位好,我在使用scipy.optimize.curve_fit结合functools.partial固定函数参数的过程中遇到了一个奇怪的问题:用位置参数固定参数时一切正常,但改用命名参数时,部分情况会报错,想请教下这是哪里出了问题,有没有可行的解决办法?

正常工作的位置参数示例

先给大家看一下我已经跑通的位置参数用法:

from scipy.optimize import curve_fit
from functools import partial

# 测试数据集
xdata = [0]*5
ydata = xdata

def func(x, a, b):
    return x + a + b

# 用位置参数固定第一个非x参数(a=2)
pfunc = partial(func, 2)
popt, _ = curve_fit(pfunc, xdata, ydata)
print(popt)  # 输出结果:[-2.]

命名参数的异常表现

当我尝试用命名参数来固定参数时,就出现了不一致的情况:

  • 固定b的时候,代码可以正常运行:
from scipy.optimize import curve_fit
from functools import partial

xdata = [0]*5
ydata = xdata

def func(x, a, b):
    return x + a + b

pfunc = partial(func, b=2)
popt, _ = curve_fit(pfunc, xdata, ydata)
print(popt)  # 输出结果:[-2.]
  • 但固定a的时候,直接抛出了异常:
pfunc = partial(func, a=2)
popt, _ = curve_fit(pfunc, xdata, ydata)
print(popt)  # 报错信息:ValueError: Unable to determine number of fit parameters.

我的实际需求

在我的实际项目中,待拟合的函数可能包含n≥3个参数,我需要固定其中最多n-1个参数,所以非常希望能找到一种可靠的、用命名参数来固定参数的方式,而不是依赖位置参数(避免参数顺序变化导致的错误)。

想请教大家:我是不是在使用partial的方式上有错误?有没有办法让命名参数的方式稳定工作?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 08:08:00