質問編集履歴
3
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -156,12 +156,18 @@
|
|
156
156
|
|
157
157
|
ありがとうございます。
|
158
158
|
|
159
|
-
|
159
|
+
#差分データ予想
|
160
160
|
|
161
161
|
![イメージ説明](4c875a6439cfe8fad4676659d5eb5724.png)
|
162
162
|
|
163
163
|
|
164
164
|
|
165
|
+
|
166
|
+
|
167
|
+
差分データから得られた元データと予測の比較
|
168
|
+
|
169
|
+
![イメージ説明](951243e6600f8a06dca1ab52ef3fb641.png)
|
170
|
+
|
165
|
-
ただ、手法によるためか精度には課題が多いようです。
|
171
|
+
ただ、手法によるためか精度には課題が多いようです。進むにつれてかなりずれていきました。
|
166
172
|
|
167
173
|
精度を上げられるようにするにはどうすべきか、いろいろ調べてみます。
|
2
アドバイスから追記致しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -20,7 +20,21 @@
|
|
20
20
|
|
21
21
|
data=np.array(data)
|
22
22
|
|
23
|
+
|
24
|
+
|
25
|
+
sabun_data=[]
|
26
|
+
|
27
|
+
for i in range(len(data)-1):
|
28
|
+
|
29
|
+
temp_sabun=data[i+1]-data[i]
|
30
|
+
|
31
|
+
sabun_data.append(temp_sabun)
|
32
|
+
|
33
|
+
sabun_data=np.array(sabun_data)
|
34
|
+
|
35
|
+
data=sabun_data
|
36
|
+
|
23
|
-
|
37
|
+
#data.shapeは(143)です。
|
24
38
|
|
25
39
|
|
26
40
|
|
@@ -127,3 +141,27 @@
|
|
127
141
|
他のサイトでは、同じdata数でtensorflow,tflearnでグラフに近似したpredictを出せているみたいなのですが、自分のプログラミングの問題がどこにあるのかわからないでおります。SimpleRNNなどもためしてみましたが同じ状況でした。
|
128
142
|
|
129
143
|
RNNについて初心者ですが、アドバイスをいただけますと幸いです。よろしくお願いいたします。
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
==========================================================
|
148
|
+
|
149
|
+
追記
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
アドバイスをいただきまして差分データから特徴量と教師データにすることで予測できるようになってきました.
|
156
|
+
|
157
|
+
ありがとうございます。
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
![イメージ説明](4c875a6439cfe8fad4676659d5eb5724.png)
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
ただ、手法によるためか精度には課題が多いようです。
|
166
|
+
|
167
|
+
精度を上げられるようにするにはどうすべきか、いろいろ調べてみます。
|
1
プログラムを追記修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -12,6 +12,12 @@
|
|
12
12
|
|
13
13
|
```python
|
14
14
|
|
15
|
+
|
16
|
+
|
17
|
+
df = pd.read_csv('international-airline-passengers.csv',skipfooter=3)
|
18
|
+
|
19
|
+
|
20
|
+
|
15
21
|
data=np.array(data)
|
16
22
|
|
17
23
|
data.shape #data.shapeは(144,)です。
|
@@ -20,31 +26,33 @@
|
|
20
26
|
|
21
27
|
#sinwaveを予測するプログラミングを参考にしてます。
|
22
28
|
|
29
|
+
|
30
|
+
|
31
|
+
#5個ずつのデータサイズごとにX,yを作成する。
|
32
|
+
|
23
|
-
|
33
|
+
X_data=[]
|
24
34
|
|
25
35
|
target=[]
|
26
36
|
|
27
|
-
#5個ずつのデータサイズごとにX,yを作成する。
|
28
|
-
|
29
|
-
input_len=5
|
30
37
|
|
31
38
|
|
39
|
+
manabu_len=5
|
32
40
|
|
33
|
-
for i in range(0,len(data)-
|
41
|
+
for i in range(0,len(data)-manabu_len):
|
34
42
|
|
35
|
-
|
43
|
+
X_data.append(data[i:i+manabu_len])
|
36
44
|
|
37
|
-
target.append(data[i+
|
45
|
+
target.append(data[i+manabu_len])
|
38
46
|
|
39
47
|
|
40
48
|
|
41
49
|
from sklearn.model_selection import train_test_split
|
42
50
|
|
43
|
-
X=np.array(
|
51
|
+
X=np.array(X_data).reshape(len(X_data),manabu_len,1)
|
44
52
|
|
45
|
-
y=np.array(target).reshape(len(data),1)
|
53
|
+
y=np.array(target).reshape(len(X_data),1)
|
46
54
|
|
47
|
-
(train_X,test_X,train_y,test_y)=train_test_split(X,y,test_size=0.2
|
55
|
+
(train_X,test_X,train_y,test_y)=train_test_split(X,y,test_size=0.2)
|
48
56
|
|
49
57
|
|
50
58
|
|
@@ -66,47 +74,45 @@
|
|
66
74
|
|
67
75
|
model=Sequential()
|
68
76
|
|
69
|
-
model.add(LSTM(n_hidden,input_shape=(
|
77
|
+
model.add(LSTM(n_hidden,input_shape=(manabu_len,n_in),kernel_initializer="random_normal"))
|
70
78
|
|
71
|
-
model.add(Dense(n_out
|
79
|
+
model.add(Dense(n_out))
|
72
80
|
|
73
81
|
model.add(Activation("linear"))
|
74
82
|
|
75
83
|
model.compile(loss="mean_squared_error",optimizer="Adam")
|
76
84
|
|
77
|
-
|
85
|
+
model.fit(X,y,batch_size=20,epochs=100,validation_data=(test_X,test_y))
|
78
86
|
|
79
|
-
|
87
|
+
|
80
88
|
|
81
89
|
|
82
90
|
|
83
91
|
#modelを参考にして、predictをグラフ化してみる。
|
84
92
|
|
85
|
-
in_=X[:1]
|
86
93
|
|
87
|
-
predict=[]
|
88
94
|
|
89
95
|
#予測したデータをpredictに格納してグラフにしてみる。
|
90
96
|
|
97
|
+
in_=X[:1]
|
98
|
+
|
99
|
+
predicted=[]
|
100
|
+
|
91
|
-
for i in range(len(data)-
|
101
|
+
for i in range(len(data)-manabu_len):
|
92
102
|
|
93
103
|
out_=model.predict(in_)
|
94
104
|
|
95
|
-
in_ = np.vstack((in_.reshape(
|
105
|
+
in_ = np.vstack( (in_.reshape(manabu_len,n_in)[1:], out_)).reshape(1, manabu_len, n_in)
|
96
106
|
|
97
107
|
predicted.append(out_.reshape(-1))
|
98
108
|
|
99
|
-
|
100
|
-
|
101
109
|
plt.plot(data, label="original")
|
102
110
|
|
103
|
-
plt.plot(predict, label="predicted")
|
111
|
+
plt.plot(predicted, label="predicted")
|
104
112
|
|
105
113
|
plt.legend()
|
106
114
|
|
107
115
|
plt.show()
|
108
|
-
|
109
|
-
|
110
116
|
|
111
117
|
コード
|
112
118
|
|