teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

edit

2018/07/13 13:04

投稿

mkgrei
mkgrei

スコア8562

answer CHANGED
@@ -4,4 +4,65 @@
4
4
  まず、データの形に問題があります。→エラーになる
5
5
  そして、推定値の変数名が間違っています。→エラーになる
6
6
 
7
- 書き写したのですか?
7
+ 書き写したのですか?
8
+
9
+ ---
10
+
11
+ とりあえず動くものを載せておくので参考にしてみてください。
12
+ ```python
13
+ import pandas as pd
14
+ import numpy as np
15
+ import keras
16
+ from keras.models import Sequential
17
+ from keras.layers import LSTM, Dense, Activation, Dropout
18
+ from keras.optimizers import Adagrad
19
+ import matplotlib.pyplot as plt
20
+ %matplotlib inline
21
+
22
+ data = pd.read_csv('international-airline-passengers.csv', skipfooter=3)
23
+ data = data.values[:, -1]
24
+ data = data[1:] - data[:-1]
25
+
26
+ inputdata = []
27
+ target = []
28
+ input_len = 5
29
+
30
+ for i in range(0, len(data)-input_len):
31
+ inputdata.append(data[i:i+input_len])
32
+ target.append(data[i+input_len])
33
+
34
+ from sklearn.model_selection import train_test_split
35
+
36
+ X = np.array(inputdata).reshape(-1, input_len, 1)
37
+ y = np.array(target).reshape(-1, 1)
38
+ (train_X, test_X, train_y, test_y) = train_test_split(X, y, test_size=0.2, shuffle=False)
39
+
40
+ n_in = 1
41
+ n_hidden = 50
42
+ n_out = 1
43
+ model = Sequential()
44
+ model.add(LSTM(n_hidden, input_shape=(input_len,n_in)))
45
+ model.add(Dense(100, activation='relu'))
46
+ model.add(Dropout(0.5))
47
+ model.add(Dense(5, activation='relu'))
48
+ model.add(Dense(100, activation='relu'))
49
+ model.add(Dropout(0.5))
50
+ model.add(Dense(n_out, activation='linear'))
51
+ opt = Adagrad()
52
+ model.compile(loss="mean_squared_error",optimizer=opt)
53
+
54
+ model.fit(train_X, train_y, batch_size=len(X)//10, epochs=50, validation_data=(test_X, test_y))
55
+
56
+ py = model.predict(train_X)
57
+ py_ = model.predict(test_X)
58
+
59
+ px = np.arange(predicted.shape[0])
60
+
61
+ fig, ax = plt.subplots(dpi=200)
62
+ ax.plot(y, label="original")
63
+ ax.plot(px[:len(py)], py, label="predicted_train", color='orange')
64
+ ax.plot(px[len(py):], py_, label="predicted_test", color='red')
65
+ plt.legend()
66
+ plt.grid()
67
+ plt.show()
68
+ ```