pythonで、時系列データを用いて教師あり学習を行うための学習データ作成方法
時系列データを用いて教師あり学習を行うための学習データの作成のための考え方
多変量の時系列データを用いて、教師あり学習によって、ある目的変数のt分後の値の推測したい場合の学習データの作成方法をまとめたいと思います。
この一般的な方法としては、時刻tを基準とし、目的変数の値のみを時刻t +1とシフトさせる方法がとられています。
具体的なpythonを用いた手順を以下に示します。 目的変数:TARGET, 説明変数:A,B,C の乱数時系列データを作成します。
import numpy as np import pandas as pd data = np.random.randn(10, 4)# 10x4 の乱数データを生成 indices = pd.date_range('2010-01-01', periods=10) # インデックス名は日付 columns = ('A', 'B', 'C', 'TARGET') # カラム名 my_dataframe = pd.DataFrame(data, index=indices, columns=columns) print(my_dataframe) out>> A B C TARGET 2010-01-01 -1.874536 0.044969 0.077942 0.089603 2010-01-02 -0.922576 -0.778048 0.883617 -0.709655 2010-01-03 -0.481583 0.987507 1.120371 -0.466234 2010-01-04 0.055468 -2.080869 -0.558581 -0.235064 2010-01-05 1.033512 -0.750830 -0.754168 1.090878 2010-01-06 -0.566832 0.201503 -0.264602 -0.003537 2010-01-07 1.890769 1.358429 -1.041281 0.438978 2010-01-08 -0.175302 -1.191327 -0.457195 -0.287566 2010-01-09 1.672760 0.094620 1.225835 -0.147332 2010-01-10 2.042621 -2.651269 -1.356004 -0.066129
次に目的変数(TARGET)の値を一日ずらします。 例えば2010-01-02の値は、2010-01-01へずらされます。
my_dataframe['TARGET'] = my_dataframe['TARGET'].shift(-1) my_dataframe out>> A B C TARGET 2010-01-01 -1.874536 0.044969 0.077942 -0.709655 2010-01-02 -0.922576 -0.778048 0.883617 -0.466234 2010-01-03 -0.481583 0.987507 1.120371 -0.235064 2010-01-04 0.055468 -2.080869 -0.558581 1.090878 2010-01-05 1.033512 -0.750830 -0.754168 -0.003537 2010-01-06 -0.566832 0.201503 -0.264602 0.438978 2010-01-07 1.890769 1.358429 -1.041281 -0.287566 2010-01-08 -0.175302 -1.191327 -0.457195 -0.147332 2010-01-09 1.672760 0.094620 1.225835 -0.066129 2010-01-10 2.042621 -2.651269 -1.356004 NaN
このように目的変数の値を推測したい時刻の値へずらすことで教師あり学習のための学習データを作成します。