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

如何隐藏拟合ARIMA/SARIMAX模型时的L-BFGS-B运行输出?

解决statsmodels最新版本ARIMA/SARIMAX拟合时L-BFGS-B日志输出过多的问题

问题背景

使用最新版statsmodels的ARIMA(statsmodels.tsa.arima.model.ARIMA)和SARIMAX(statsmodels.tsa.statespace.sarimax.SARIMAX)处理大型数据集时,迭代拟合过程会反复输出L-BFGS-B的运行日志,占用大量屏幕空间。此前尝试使用model.fit(iprint=-1)和model.fit(disp=-1)均报错,因为这两个参数在新版本中已被弃用。

解决方案

在最新版statsmodels中,需通过fit()方法的method_kwargs参数,将优化器控制参数传递给底层的L-BFGS-B优化器,具体操作如下:

方法1:通过method_kwargs关闭日志(推荐)

直接在fit()中传入method_kwargs={'iprint': -1},即可完全关闭L-BFGS-B的日志输出:

ARIMA示例

from statsmodels.tsa.arima.model import ARIMA

# 初始化模型(假设ts_data为你的时间序列数据,order为模型阶数)
arima_model = ARIMA(ts_data, order=(1, 1, 1))
# 拟合时传递method_kwargs关闭日志
arima_results = arima_model.fit(method_kwargs={'iprint': -1})

SARIMAX示例

from statsmodels.tsa.statespace.sarimax import SARIMAX

# 初始化模型(seasonal_order为季节性阶数)
sarimax_model = SARIMAX(ts_data, order=(1, 1, 1), seasonal_order=(1, 1, 1, 12))
# 拟合时传递method_kwargs关闭日志
sarimax_results = sarimax_model.fit(method_kwargs={'iprint': -1})

原理:新版本statsmodels将优化器的配置参数统一通过method_kwargs传递,iprint=-1是scipy的L-BFGS-B优化器的参数,用于关闭所有迭代日志输出。

方法2:临时重定向标准输出(备选)

如果上述方法失效,可通过临时重定向标准输出到空设备,彻底屏蔽所有输出(注意:会同时屏蔽其他可能有用的警告或信息):

from contextlib import redirect_stdout
import os
from statsmodels.tsa.arima.model import ARIMA

arima_model = ARIMA(ts_data, order=(1, 1, 1))
with redirect_stdout(open(os.devnull, 'w')):
    arima_results = arima_model.fit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:33:38