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

R拟合大型加性模型时如何添加进度条查看剩余运行时间

R中大型加性模型(bam)运行进度查看方案

针对mgcv包的bam模型耗时久、需要预估完成时间的需求,可直接使用以下3种成熟方案:

  • 方案1:使用mgcv原生verbose参数
    bam函数自带verbose逻辑参数,设置为TRUE后会自动输出迭代过程的全量信息,包含外迭代/内迭代次数、平滑参数优化状态、每步耗时等,你可以根据前几次迭代的平均耗时推算剩余运行时间。
    示例代码:
library(mgcv)
# 拟合模型时开启verbose输出
fit <- bam(y ~ s(var1) + s(var2) + te(var3, var4), 
           data = your_large_dataset, 
           verbose = TRUE)
  • 方案2:搭配progressr包实现带剩余时间预估的可视化进度条
    progressr包可直接适配mgcv的bam模型,无需修改原有建模逻辑就能生成标准进度条,直接展示完成百分比、已用时长、预估剩余时长,完全满足你安排日程的需求。
    示例代码:
library(mgcv)
library(progressr)
# 全局开启进度条支持,可切换样式为"progress"获得更美观的界面
handlers(global = TRUE)
handlers("txtprogressbar")

# 正常运行bam模型即可自动展示进度条
fit <- bam(y ~ s(var1) + s(var2) + te(var3, var4), 
           data = your_large_dataset,
           discrete = TRUE) # 开启离散拟合可大幅提速,进度预估也更准确
  • 方案3:自定义迭代追踪函数
    如果你需要更灵活的进度记录方式,可以给bam的control参数传入自定义追踪函数,实现每步迭代后输出自定义格式的进度信息:
    示例代码:
# 自定义迭代追踪函数,可自由修改输出内容
custom_trace <- function(iter, gcv_val, ...) {
  cost_min <- proc.time()[3] / 60
  cat(sprintf("第%d次迭代完成,当前GCV值:%.2f,已运行时长:%.1f分钟\n", 
              iter, gcv_val, cost_min))
}

# 拟合时传入自定义函数
fit <- bam(y ~ s(var1) + s(var2) + te(var3, var4), 
           data = your_large_dataset,
           control = list(trace = custom_trace))

额外优化建议

使用笔记本运行大型模型时,建议同时开启bam的并行计算参数cluster,可缩短整体运行时长,跑模型时连接电源避免CPU降频,能提升剩余时间预估的准确性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:36:07