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

如何从复合模型对象中动态移除模型?

问题:如何移除复合拟合模型中的组件?

我正在编写一个自动推导光谱数据中峰的数量并拟合的脚本,流程如下:

  • 先对数据的最高点进行洛伦兹拟合,计算残差
  • 随后在残差中寻找连续的最高点继续拟合
  • 每次迭代时,对比当前的LnL与上一次迭代的LnL,以此判断新增模型是否有价值

目前遇到的核心问题是:将模型添加到复合模型后,无法将其移除。我必须先添加模型才能判断LnL是否有所提升,不能提前跳过这一步。另外,我试过find_peaks寻峰,但它过于依赖手动输入和调整prominence等参数,效果不佳。之前尝试过多种带del的循环,只能删除参数,无法移除模型本身。


已解决:重新构建复合模型

通过过滤掉目标组件并重新创建复合模型的方式,解决了这个问题。代码如下:

# 过滤掉要移除的组件(globals()[f"gauss{CI}"]是动态创建的变量,若为手动创建的变量直接使用变量名即可)
new_components = [model for model in gaussi.components if model != (globals()[f"gauss{CI}"])]
print("BEGONE...!")
# 重新构建不含目标组件的复合模型
new_composite_model = new_components[0]
for model in new_components[1:]:
    new_composite_model += model
gaussi = new_composite_model

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 14:57:45