学習データを準備するよ 第31回 人工知能
前回の記事で書いた学習データの構成。
少しおさらいをしよう。
学習データは時系列に並び替える。
例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")
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'])
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 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
#csvを読み込む
df = pd.read_csv("sample.csv")
#日付の型に変換
df['datadate'] = pd.to_datetime(df['datadate'])
#インデックス指定
df.set_index('datadate', inplace=True)
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
df = pd.read_csv("sample.csv")
#日付の型に変換
df['datadate'] = pd.to_datetime(df['datadate'])
#何日分を学習するかを指定。ここでは3日
look_back = 3
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
#csvを読み込む
df = pd.read_csv("sample.csv")
#日付の型に変換
df['datadate'] = pd.to_datetime(df['datadate'])
X_train, y_train = create_dataset(df, look_back)
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とさほど変わらない。
次回は、標準化。
コメント
0 件のコメント :
コメントを投稿