こちらのUdemyのコースでTensorflowを使ったビットコインの予測が紹介されていました。それを参考にドル円の予測をやってみました。
前回はナイーブモデルでベースラインを作成しました。いよいよTensoflowで予測していきますが、今回はまず学習データの作成を行います。
Udemyのコースと同じように、直近7日間のデータから翌日の値を予測するモデル、すなわち、Indexで表すと以下のような形になります。

前回まででUSDJPY日足データの終値はclosesという変数に入っています。

この配列に対して、以下のような行列を作り、この行列でインデックス指定を行うと、ほしい学習データが作成できます。

では、どのようにこのような行列を作るかですが、コースでは以下のように作成しています。
まず、1X8の行列を作ります。window_sizeが予測に用いるデータサイズで、horizonが予測するデータサイズです。

さらに以下のような2589X1の行列を作ります。
2589というのは len(closes)-(window_size+horizon-1) の計算結果なのですが、どうしてこのような式になるのかは、後ほど説明します。

最後に、window_stepとrecord_stepを足し合わせます。

欲しかった行列ができました。
そして、最後の行を見ると、どうして上で2589という数字がでてきたかわかりますね。
そう、最後が2595ですので、そこからwindow_size分引いた値である2588が必要なのでした。
closesに対してこの行列を使ってインデックス指定します。

左7つの数値から一番右の数値を予測しますので、左7列と右1列に分割します。

訓練データとテストデータに分割したら、学習データの完成です。

次回は、いよいよモデルを作成して、予測を行います!