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

如何使用lmfit生成可替换sigma和n参数的不同模型?

解决lmfit模型生成函数的参数绑定问题

问题根源在于functools.partial的位置参数绑定逻辑:你直接按位置传入sigma和n,会错误地将它们绑定到PnE的前两个参数(E和sigma),导致lmfit.Model解析时,把原本的拟合参数E_k识别为未定义变量。

以下是两种可行的解决方案:

方法一:使用关键字参数固定目标参数

通过functools.partial的关键字参数绑定,明确指定要固定的sigma和n,避免位置混淆:

import functools
from lmfit import Model
import numpy as np

def PnE(E, sigma, n, E_k, overlap):
    return ((1+np.exp(-(E_k-E)*sigma))**n*overlap)

def fit_PnE(sigma, n):
    # 用关键字参数固定sigma和n,保留E、E_k、overlap为拟合相关参数
    G = functools.partial(PnE, sigma=sigma, n=n)
    model = Model(G)
    return model

方法二:嵌套函数直接固定参数

通过定义内部函数,直接引用外部传入的sigma和n,逻辑更直观:

from lmfit import Model
import numpy as np

def PnE(E, sigma, n, E_k, overlap):
    return ((1+np.exp(-(E_k-E)*sigma))**n*overlap)

def fit_PnE(sigma, n):
    def fixed_PnE(E, E_k, overlap):
        return PnE(E, sigma, n, E_k, overlap)
    model = Model(fixed_PnE)
    return model

两种方法都能实现固定sigma和n的需求,让lmfit正确识别E(自变量)、E_k、overlap为拟合参数。

内容的提问来源于stack exchange,提问作者IGY

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:16:11