1

ARCH パッケージを使用して、月ごとに何千ものセンサーからのデータに GARCH モデルを当てはめています。すべてのデータがクリーンではなく、一部のセンサーではモデルが収束しない可能性があることはわかっていますが、それで問題ありません。後でセンサーごとに対処する予定です。

私の問題は、Python が警告を処理する方法です。警告ドキュメントに従って:

概念的には、警告フィルターはフィルター仕様の順序付けられたリストを維持します。特定の警告は、一致が見つかるまで、リスト内の各フィルター仕様に対して順番に照合されます。試合は、試合の処分を決定します。

つまり、基本的には

warnings.simplefilter('ignore')

リストの先頭に追加されます。

しかし、ARCH パッケージ/arch/base.pyでは、507 行目に次のように書かれています。

warnings.simplefilter('always')

これは本質的'always'に、ARCH のモデル フィット メソッドが呼び出されるたびに、警告フィルターの先頭に追加されます。'ignore'これにより、警告が常に表示されるようになります。これは、呼び出しを行う前または後にしかリストの先頭に追加できないためです.fit()(これは、次の呼び出しで上書きされ'always'ます。私の問題には何千ものセンサーが関係しているため、何千ものJupyter ノートブックのクロールを遅くする警告。

すべての条件下で警告を無視する方法はありますか? 警告用のスーパーフィルターのように素晴らしいでしょう。

4

1 に答える 1

2

彼らは毎回フィルターをリセットしているので、機能をハイジャックする以外に解決策はありませんwarn

Python モジュールをインポートすると、sys.modules後で使用できるようにディクショナリに保存されます。warningsしたがって、 ARCH パッケージの前にモジュールを 1 回インポートするだけで十分です。

import warnings
warnings.warn = lambda *a, **kw: False

# do stuff which might trigger warnings

それは醜い解決策です、私は認めます。しかし、簡単なハックとして、それはその目的を果たすはずです.


長期的な解決策として、PR を開いて状況を説明することをお勧めします。関数に引数を追加して、警告を発するかどうかを決定することは、私には良い考えのように思えます。

于 2016-10-12T08:56:31.383 に答える