Pycaretで時系列処理を行う際の、欠測データの扱いの備忘録

学習過程において、いろいろな前処理をよしなに行ってくれるPycaretは大変便利なのですが、データが欠測している場合の扱いに関して調べて見たメモです。

欠測データ処理の設定

補完処理に関しては setup() のパラメータで指定されます。一覧に関しては改めてまとめるのも面倒なので、以下のようなページをご参照ください。

数値データの場合には numeric_imputation にて内挿の値を決めます。オプションは3通りで

“mean"(default)
“median"(中央値)
“zero"(0埋め)

からいずれかを選択します。

処理するデータ

適当なデータセットを作ります。2023/6/30 12:00~14:00 の param01 が欠測している想定です。

setup()で処理した結果

まずはデフォルトの “mean" で処理した結果です。NaNの個所に値が入っています。ただこれがmean()で計算した値とは異なるようです。(さらに言えば、setup() を実行しなおすたびに値が変わる)また、"median"に方法を変えた場合も同様に値が入ります。

タイムスタンプが存在しない場合でsetup()した場合

次に12~14時でタイムスタンプも無い場合のデータを準備します。

setup()で同様に処理した結果

このように12:00~14:00のデータがありません。

このように

・データのタイムスタンプは記録されているものの、データが存在しない場合(NaN)は、指定の方法で補完値が代入される。
・もともとタイムスタンプが無いタイプのデータ欠損については、空いている時間を追加することは無く、単純に無いものと見なされる。(モデル構築のアルゴリズムによっては影響が出るかもしれない)

上記のような違いがありました。測器のエラーであったりデータ転送時のトラブルであったりと、欠測といってもいろいろありますので、取り扱いにはご注意を。

技術・開発pycaret,Python

Posted by tomi