停止打印 INFO:cmdstanpy:start chain 1, INFO:cmdstanpy:finish chain 1

Mad*_*ess 9 python facebook-prophet

我使用 cmdstanpy 而不是 pystan 运行 FBProphet。出于我的目的,我必须在 jupyter 笔记本中多次运行训练和预测,这会导致不断打印:

INFO:cmdstanpy:start chain 1
INFO:cmdstanpy:finish chain 1
Run Code Online (Sandbox Code Playgroud)

当我必须为超过 10000 个模型运行此模型(我在更新训练集后单独预测每天的值)并打印 20000 行时,问题就出现了。这使得笔记本电脑速度极其缓慢。有什么方法可以阻止 FBProphet 打印这两行吗?

我尝试过的事情:

  1. Verbose False 给出错误:
TypeError                                 Traceback (most recent call last)
<ipython-input-126-586e1241babb> in <module>
     17             model = Prophet(uncertainty_samples=True, weekly_seasonality = True, 
     18                             yearly_seasonality= True, changepoint_prior_scale = 0.5,
---> 19                             daily_seasonality=False, verbose = False)
     20             model.add_seasonality(name='monthly', period=30.5, fourier_order=2)
TypeError: __init__() got an unexpected keyword argument 'verbose'
Run Code Online (Sandbox Code Playgroud)
  1. 如何控制fbprophet的输出? 这不会抑制输出。

请指教。

uni*_*ino 14

这个答案适用于我关闭 cmdstanpy 信息

主要是

import logging
logger = logging.getLogger('cmdstanpy')
logger.addHandler(logging.NullHandler())
logger.propagate = False
logger.setLevel(logging.CRITICAL)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,即使使用 FBProphet,效果也很完美 (2认同)

小智 2

日志记录级别可以通过创建 CmdStanModel 对象中的 logger 选项来控制:

import logging
logger = logging.getLogger('simple_example')
logger.setLevel(logging.WARNING)

CmdStanModel(stan_file=your_path,logger=logger)
Run Code Online (Sandbox Code Playgroud)

有关更多选项,请参阅https://docs.python.org/3/howto/logging.html#logging-levels 。上面只是创建了一个自定义记录器,以便仅打印警告级别的消息,而不是 CmdStanPy utils 中定义的默认信息级别(https://cmdstanpy.readthedocs.io/en/v0.9.67/_modules/ cmdstanpy/utils.html