前提・実現したいこと
lstmを利用し何日かのデータをもとに3週間の分の予想をしたいのですが
例えば2018/08/15以前のデータを利用して2018/8/15〜2018/9/7の数値を予想するみたいにしたいです。
データの分割のやり方 lstmの構築やり方を教えてください。
素人ですがアドバイスなどよろしくお願いいたします。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
ソースコード
Open High Low Close VolumeBTC VolumeUSD
Date
2015-01-29 0.298163 0.255423 0.331065 0.278031 0.000047 0.000075
2015-01-30 0.278031 0.244828 0.330425 0.287877 0.000026 0.000039
2015-01-31 0.287877 0.254544 0.333159 0.291060 0.000108 0.000170
2015-02-01 0.291060 0.256470 0.334439 0.280872 0.000031 0.000050
2015-02-02 0.280872 0.239719 0.310297 0.260544 0.000057 0.000085
... ... ... ... ... ... ...
2020-04-09 0.113103 0.095402 0.133392 0.111976 0.001614 0.001090
2020-04-10 0.111976 0.096658 0.131704 0.112564 0.004419 0.002981
2020-04-11 0.112564 0.096574 0.133624 0.112956 0.001830 0.001246
2020-04-12 0.112956 0.098040 0.133741 0.113103 0.002080 0.001421
2020-04-13 0.113103 0.096030 0.133333 0.113152 0.003093 0.002095
[1890 rows x 6 columns]
def _load_data(data, n_prev=20):
docX, docY = [], []
for i in range(len(data)-n_prev):
docX.append(data.iloc[i:i+n_prev].values)
docY.append(data.iloc[i+n_prev].values)
alsX = np.array(docX)
alsY = np.array(docY)
return alsX, alsY
def train_test_split(df, test_size=0.1, n_prev=20):
ntrn = round(len(df) * (1 - test_size))
ntrn = int(ntrn)
X_train, y_train = _load_data(df.iloc[0:ntrn], n_prev)
X_test, y_test = _load_data(df.iloc[ntrn:], n_prev)
return (X_train, y_train), (X_test, y_test)
(X_train, y_train), (X_test, y_test) = train_test_split(df_ada)
from keras.models import Sequential
from keras.layers import Dense, Activation, Dropout
from keras.layers.recurrent import LSTM
from keras import optimizers
model = Sequential()
model.add(LSTM(300,
dropout=0.2,
recurrent_dropout=0.2,
input_shape=(20,6)))
model.add(Dense(50, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(6, activation='relu'))
model.summary()
model.compile(optimizer='adam',
loss='mse',
metrics=['mae'])
試したこと
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー