tensorflow RNN 時系列データ解析において、欠損値が多い状況下での時間 look backでデータを最大限利用する方法

実現したいこと

時系列データの解析をしています。
1分間隔、3年分のデータをLSTMで解析しています。
LSTMの入力層を作るにあたり、5分の look backが必要となります。
ただし、データには欠損値が多く、5行のルックバックをすると、数時間前までルックバックしてしまったりします。
そこで、ルックバックをrollingを使い5分と設定して入力層配列を作ろうとすると、欠損値があるため、配列の二次元目の次元が統一されず、ERRORになります。
欠損値を直前あるいは直後のデータでfillするやり方は、精度を上げる捏造データと思っておりますので、やりたくありません。
しかたなく、5分のルックバック=5行 ではないデータは捨ててしまっており、約40%のデータを捨ててしまっています。
貴重なデータを捨てないでRNNを実行する方法はないでしょうか?

発生している問題・分からないこと

実現したいことにて記述した通り。
RNN時系列データ解析において、欠損値が多い状況下で、時間ルックバックを実行し、尚使うデータを最大化したい。

該当のソースコード

PYTHON

1#説明変数の指定時間Look back配列2 timesteps="5min"3 wndw=54 out_data_exp=df_exp.rolling(window=timesteps)5 data_list_exp=[]6 effective_num_list=[]7 for n,d in enumerate(out_data_exp):8 d=d.values 9 d=d.reshape(-1,d.shape[1]) 10 if d.shape[0]==wndw:11 data_list_exp.append(d)12 """ 13 #欠損値があると、2次元目の次元が小さくなり、入力層配列ができなくなるので、 14 次元確保できるもののみ選別。 15 """16 effective_num_list.append(n) 17 else:18 pass19 array_exp=np.array(data_list_exp)20 array_exp=np.array.reshape(-1,wndw,np.array_exp.shape[2])21 22 #目的変数の指定時間Look back配列23 out_data_obj=df_obj.rolling(window=timesteps)24 data_list_obj=[]25 for i,d in enumerate(out_data_obj):26 d=d.iloc[-1,:]27 d=d.values 28 if i in effective_num_list:29 data_list_obj.append(d)30 #次元確保のため選別した説明変数と同じ時間の目的変数のみを選別31 else:32 pass33 array_obj=np.array(data_list_obj).reshape(-1,1)

試したこと・調べたこと

上記の詳細・結果

有効な回答は得られていません。

補足

特になし

コメントを投稿

0 コメント