对于使用ARCH package的月份中的每一天中的数千个传感器,我正在拟合GARCH模型。我知道所有的数据都不干净,并且模型可能并不适合某些传感器,我对此表示满意。我打算以后每传感器基础上处理它们。模块覆盖过滤器列表时的过滤器警告
我的问题是Python处理警告的方式。由于每Warnings documentation:
概念,警告过滤器维护的过滤器 规范有序列表;任何特定警告依次与列表中的每个过滤器 规范进行匹配,直到找到匹配;比赛 决定比赛的处置。
这基本上意味着
warnings.simplefilter('ignore')
将被添加到列表的头部。
然而,在ARCH package,在/arch/base.py,line 507读取:
warnings.simplefilter('always')
这在本质上追加'always'
到警告的开始一个呼叫到ARCH的模型拟合方法制备每次进行过滤。这可确保始终显示警告,因为我只能在拨打电话.fit()
(在下一次呼叫中将被'always'
覆盖)之前或之后,将'ignore'
添加到清单的头部。由于我的问题涉及数千个传感器,打印数千警告其缓慢的Jupyter笔记本爬行。
有没有办法忽略所有条件下的警告?像警告超级过滤器将是巨大的。
非常不幸的是,他们在每次通话时都重置了过滤器。你可以劫持'warnings'模块的'warn'函数,但这很丑陋。 – rubik
@rubik,我不知道如何...然后再次,他们在每次调用时都会导入'warnings',所以除非我更改源代码,否则我不会看到如何劫持代码中的'warn'函数有助于。 – Kartik
模块只导入一次,然后存储在'sys.modules'中。我将在答案中概述解决方案。 – rubik