回答編集履歴

1

edit

2018/07/13 13:04

投稿

mkgrei
mkgrei

スコア8560

test CHANGED
@@ -11,3 +11,125 @@
11
11
 
12
12
 
13
13
  書き写したのですか?
14
+
15
+
16
+
17
+ ---
18
+
19
+
20
+
21
+ とりあえず動くものを載せておくので参考にしてみてください。
22
+
23
+ ```python
24
+
25
+ import pandas as pd
26
+
27
+ import numpy as np
28
+
29
+ import keras
30
+
31
+ from keras.models import Sequential
32
+
33
+ from keras.layers import LSTM, Dense, Activation, Dropout
34
+
35
+ from keras.optimizers import Adagrad
36
+
37
+ import matplotlib.pyplot as plt
38
+
39
+ %matplotlib inline
40
+
41
+
42
+
43
+ data = pd.read_csv('international-airline-passengers.csv', skipfooter=3)
44
+
45
+ data = data.values[:, -1]
46
+
47
+ data = data[1:] - data[:-1]
48
+
49
+
50
+
51
+ inputdata = []
52
+
53
+ target = []
54
+
55
+ input_len = 5
56
+
57
+
58
+
59
+ for i in range(0, len(data)-input_len):
60
+
61
+ inputdata.append(data[i:i+input_len])
62
+
63
+ target.append(data[i+input_len])
64
+
65
+
66
+
67
+ from sklearn.model_selection import train_test_split
68
+
69
+
70
+
71
+ X = np.array(inputdata).reshape(-1, input_len, 1)
72
+
73
+ y = np.array(target).reshape(-1, 1)
74
+
75
+ (train_X, test_X, train_y, test_y) = train_test_split(X, y, test_size=0.2, shuffle=False)
76
+
77
+
78
+
79
+ n_in = 1
80
+
81
+ n_hidden = 50
82
+
83
+ n_out = 1
84
+
85
+ model = Sequential()
86
+
87
+ model.add(LSTM(n_hidden, input_shape=(input_len,n_in)))
88
+
89
+ model.add(Dense(100, activation='relu'))
90
+
91
+ model.add(Dropout(0.5))
92
+
93
+ model.add(Dense(5, activation='relu'))
94
+
95
+ model.add(Dense(100, activation='relu'))
96
+
97
+ model.add(Dropout(0.5))
98
+
99
+ model.add(Dense(n_out, activation='linear'))
100
+
101
+ opt = Adagrad()
102
+
103
+ model.compile(loss="mean_squared_error",optimizer=opt)
104
+
105
+
106
+
107
+ model.fit(train_X, train_y, batch_size=len(X)//10, epochs=50, validation_data=(test_X, test_y))
108
+
109
+
110
+
111
+ py = model.predict(train_X)
112
+
113
+ py_ = model.predict(test_X)
114
+
115
+
116
+
117
+ px = np.arange(predicted.shape[0])
118
+
119
+
120
+
121
+ fig, ax = plt.subplots(dpi=200)
122
+
123
+ ax.plot(y, label="original")
124
+
125
+ ax.plot(px[:len(py)], py, label="predicted_train", color='orange')
126
+
127
+ ax.plot(px[len(py):], py_, label="predicted_test", color='red')
128
+
129
+ plt.legend()
130
+
131
+ plt.grid()
132
+
133
+ plt.show()
134
+
135
+ ```