前回の記事で書いた学習データの構成。
少しおさらいをしよう。

学習データは時系列に並び替える。

例1)

例2)


LSTMは、言わば三段ジャンプみたいなもの。
「ホップステップジャンプのホップで、1m50、ステップで1m50、その勢いで、ジャンプしたら、何m飛ぶ?」
その計算を解くのがLSTM。前段の条件を与えてるのがポイント。
例は、全部3日分にしてるけど、決して3日に限らず、5日にしようが、1年にしようが構わない。


前回記事では、sample.csvを学習データにするために何をするかを書いた。
今回は、これを実際にコードで書きます。

まず読み込むためには、pandasがいる。
それと行列にするので、numpy。


import pandas as pd
import numpy as np



pandasにはcsvを読込させる機能がある。


それを書く。

import pandas as pd
import numpy as np

#csvを読み込む
df = pd.read_csv("sample.csv")


読み込みできたcsv。その中にある日付は、日付の型ではなく日付が書いてある単なる文字。
なので、日付型にする。

import pandas as pd
import numpy as np

#csvを読み込む
df = pd.read_csv("sample.csv")


#日付の型に変換
df['datadate'] = pd.to_datetime(df['datadate'])


で、さらにそれをindexにする。
import pandas as pd
import numpy as np

#csvを読み込む
df = pd.read_csv("sample.csv")

#日付の型に変換
df['datadate'] = pd.to_datetime(df['datadate'])


#インデックス指定
df.set_index('datadate', inplace=True)



横並びに変える関数を書く。

import pandas as pd
import numpy as np


# 関数の定義
def create_dataset(dataset, look_back):
 dataX, dataY = [], []
  for i in range(len(dataset)-look_back-1):
  xset, yset = [], []
  for j in range(dataset.shape[1]):
   a = dataset.iloc[i:i+look_back, j]
   xset.append(a)
  yset.append(dataset.iloc[i+look_back, 0])
  yset.append(dataset.iloc[i+look_back, 1])

  dataY.append(yset)
  dataX.append(xset)
 return np.array(dataX), np.array(dataY)




#csvを読み込む
df = pd.read_csv("sample.csv")

#日付の型に変換
df['datadate'] = pd.to_datetime(df['datadate'])

#インデックス指定
df.set_index('datadate', inplace=True)


何日前からの学習にするかを決める。今回のコードでは3日。

import pandas as pd
import numpy as np

# 関数の定義
def create_dataset(dataset, look_back):
 dataX, dataY = [], []
  for i in range(len(dataset)-look_back-1):
  xset, yset = [], []
  for j in range(dataset.shape[1]):
   a = dataset.iloc[i:i+look_back, j]
   xset.append(a)
  yset.append(dataset.iloc[i+look_back, 0])
  yset.append(dataset.iloc[i+look_back, 1])

  dataY.append(yset)
  dataX.append(xset)
 return np.array(dataX), np.array(dataY)
#csvを読み込む
df = pd.read_csv("sample.csv")

#日付の型に変換
df['datadate'] = pd.to_datetime(df['datadate'])


#何日分を学習するかを指定。ここでは3日
look_back = 3



XとYと分ける。

import pandas as pd
import numpy as np


# 関数の定義
def create_dataset(dataset, look_back):
 dataX, dataY = [], []
  for i in range(len(dataset)-look_back-1):
  xset, yset = [], []
  for j in range(dataset.shape[1]):
   a = dataset.iloc[i:i+look_back, j]
   xset.append(a)
  yset.append(dataset.iloc[i+look_back, 0])
  yset.append(dataset.iloc[i+look_back, 1])

  dataY.append(yset)
  dataX.append(xset)
 return np.array(dataX), np.array(dataY)


#csvを読み込む
df = pd.read_csv("sample.csv")

#日付の型に変換
df['datadate'] = pd.to_datetime(df['datadate'])


X_train, y_train = create_dataset(df, look_back)


ここまでが前回の記事の内容をコードにしたもの。

実はここまでが一番大変で、あとの流れは、CNNとさほど変わらない。

次回は、標準化。