質問編集履歴
6
質問文の追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -42,7 +42,11 @@
|
|
42
42
|
|
43
43
|
|
44
44
|
|
45
|
-
|
45
|
+
再追記
|
46
|
+
|
47
|
+
使用している交通量のデータは,
|
48
|
+
|
49
|
+
100日間1分間隔(144000行)で記録された時系列のデータになります。
|
46
50
|
|
47
51
|
|
48
52
|
|
5
コードの変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -104,7 +104,7 @@
|
|
104
104
|
|
105
105
|
date_1, date_2 = train_test_split(date, test_size=test_rate, shuffle=False)
|
106
106
|
|
107
|
-
train,
|
107
|
+
train, test = train_test_split(Pt,test_size=test_rate,shuffle=False)
|
108
108
|
|
109
109
|
|
110
110
|
|
@@ -116,9 +116,9 @@
|
|
116
116
|
|
117
117
|
t_train = train[pred_time:] #データの上からpred_time分を削って正解データに
|
118
118
|
|
119
|
-
x_
|
119
|
+
x_test = test[:-pred_time] #データの下からpred_time分を削ってテストデータに
|
120
|
-
|
120
|
+
|
121
|
-
t_
|
121
|
+
t_test = test[pred_time:] #データの上からpred_time分を削って正解データに
|
122
122
|
|
123
123
|
|
124
124
|
|
@@ -132,9 +132,9 @@
|
|
132
132
|
|
133
133
|
t_train = t_train.reshape(-1, 1)
|
134
134
|
|
135
|
-
x_
|
135
|
+
x_test = x_test .reshape(-1, 1)
|
136
|
-
|
136
|
+
|
137
|
-
t_
|
137
|
+
t_test = t_test .reshape(-1, 1)
|
138
138
|
|
139
139
|
|
140
140
|
|
@@ -146,7 +146,7 @@
|
|
146
146
|
|
147
147
|
|
148
148
|
|
149
|
-
def scale(x_train, x_
|
149
|
+
def scale(x_train, x_test , t_train, t_test ):
|
150
150
|
|
151
151
|
|
152
152
|
|
@@ -154,11 +154,11 @@
|
|
154
154
|
|
155
155
|
x_train = x_train.astype(np.float32)
|
156
156
|
|
157
|
-
x_
|
157
|
+
x_test = x_test .astype(np.float32)
|
158
158
|
|
159
159
|
t_train = t_train.astype(np.float32)
|
160
160
|
|
161
|
-
t_
|
161
|
+
t_test = t_test .astype(np.float32)
|
162
162
|
|
163
163
|
|
164
164
|
|
@@ -168,21 +168,21 @@
|
|
168
168
|
|
169
169
|
x_train = sclr.fit_transform(x_train)
|
170
170
|
|
171
|
-
x_
|
171
|
+
x_test = sclr.transform(x_test )
|
172
172
|
|
173
173
|
t_train = sclr.transform(t_train)
|
174
174
|
|
175
|
-
t_
|
175
|
+
t_test = sclr.transform(t_test )
|
176
176
|
|
177
177
|
|
178
178
|
|
179
|
-
return x_train, x_
|
179
|
+
return x_train, x_test , t_train, t_test , sclr
|
180
180
|
|
181
181
|
|
182
182
|
|
183
183
|
#正規化
|
184
184
|
|
185
|
-
x_train, x_
|
185
|
+
x_train, x_test , t_train, t_test , sclr = scale(x_train, x_test , t_train, t_test )
|
186
186
|
|
187
187
|
|
188
188
|
|
@@ -190,7 +190,7 @@
|
|
190
190
|
|
191
191
|
x_train = np.reshape(x_train.astype("float32"), (x_train.shape[0],1,x_train.shape[1] ))
|
192
192
|
|
193
|
-
x_
|
193
|
+
x_test = np.reshape(x_test .astype("float32"), (x_test .shape[0],1,x_test .shape[1] ))
|
194
194
|
|
195
195
|
|
196
196
|
|
@@ -248,9 +248,9 @@
|
|
248
248
|
|
249
249
|
#予測
|
250
250
|
|
251
|
-
pred = model.predict(x_
|
251
|
+
pred = model.predict(x_test ) #予測値
|
252
|
-
|
252
|
+
|
253
|
-
obs = t_
|
253
|
+
obs = t_test #観測値
|
254
254
|
|
255
255
|
|
256
256
|
|
4
質問文の追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -20,6 +20,24 @@
|
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
+
追記
|
24
|
+
|
25
|
+
下記図に関して,
|
26
|
+
|
27
|
+
青線が予測値
|
28
|
+
|
29
|
+
オレンジ線が観測値
|
30
|
+
|
31
|
+
になります。
|
32
|
+
|
33
|
+
また,ソースコードにおける「pred_time」が予測したい時間先になっており,
|
34
|
+
|
35
|
+
pred_time=30で,正解データが30分先の値であることを意味しています。
|
36
|
+
|
37
|
+
この意味として,ある1時点のデータを学習データ,その時点から30分後の時点のデータを正解データとして
|
38
|
+
|
39
|
+
損失関数を小さくするような学習をしてほしいと考えています。
|
40
|
+
|
23
41
|
|
24
42
|
|
25
43
|
|
3
コードの変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -50,7 +50,7 @@
|
|
50
50
|
|
51
51
|
|
52
52
|
|
53
|
-
import_file = 'C:/Users/
|
53
|
+
import_file = 'C:/Users/temp/Desktop/week_day1.csv' #データファイルの読み込み
|
54
54
|
|
55
55
|
|
56
56
|
|
@@ -306,7 +306,7 @@
|
|
306
306
|
|
307
307
|
#csvに書き出し
|
308
308
|
|
309
|
-
df.to_csv('C:/Users/
|
309
|
+
df.to_csv('C:/Users/temp/Desktop/5_30_output.csv')
|
310
310
|
|
311
311
|
```
|
312
312
|
|
2
コードの変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
問題点として,
|
10
10
|
|
11
|
-
(1)明らかに精度が高い
|
11
|
+
(1)明らかに精度が高い(本当に意図した時間先を予測しているのか?)
|
12
12
|
|
13
13
|
(2)予測したい時間を変えたとき明らかに不自然な予測結果が得られる
|
14
14
|
|
@@ -50,7 +50,7 @@
|
|
50
50
|
|
51
51
|
|
52
52
|
|
53
|
-
import_file = 'C:/Users/
|
53
|
+
import_file = 'C:/Users/Shunsuke Kiso/Desktop/week_day1.csv' #データファイルの読み込み
|
54
54
|
|
55
55
|
|
56
56
|
|
@@ -58,7 +58,7 @@
|
|
58
58
|
|
59
59
|
test_rate = 0.2 #データの分割割合
|
60
60
|
|
61
|
-
pred_time =
|
61
|
+
pred_time = 720 #何分先を予測するかの決定(データ:1分間隔/1時間先を予測:pred_time = 60)
|
62
62
|
|
63
63
|
time = 1440
|
64
64
|
|
@@ -74,7 +74,7 @@
|
|
74
74
|
|
75
75
|
date = df.iloc[:,0].values #データの1列目を抽出
|
76
76
|
|
77
|
-
Pt = df.iloc[:, 3].values #データの4列目を抽出
|
77
|
+
Pt = df.iloc[:, 3:4].values #データの4列目を抽出
|
78
78
|
|
79
79
|
|
80
80
|
|
@@ -214,7 +214,7 @@
|
|
214
214
|
|
215
215
|
es = EarlyStopping(monitor='val_loss',
|
216
216
|
|
217
|
-
patience=
|
217
|
+
patience=5,
|
218
218
|
|
219
219
|
verbose=1)
|
220
220
|
|
@@ -222,7 +222,7 @@
|
|
222
222
|
|
223
223
|
#モデルの学習
|
224
224
|
|
225
|
-
history = model.fit(x_train, t_train, epochs=10
|
225
|
+
history = model.fit(x_train, t_train, epochs=10, batch_size=256, verbose=1, shuffle=False, validation_split = 0.1, callbacks=[es])
|
226
226
|
|
227
227
|
|
228
228
|
|
@@ -306,13 +306,13 @@
|
|
306
306
|
|
307
307
|
#csvに書き出し
|
308
308
|
|
309
|
-
df.to_csv('C:/Users/
|
309
|
+
df.to_csv('C:/Users/Shunsuke Kiso/Desktop/5_30_output.csv')
|
310
310
|
|
311
311
|
```
|
312
312
|
|
313
|
-
![30分後を予測](2
|
313
|
+
![30分後を予測](6d7b274ae3e438ed11f19321f0ef4e9b.png)
|
314
|
-
|
314
|
+
|
315
|
-
![
|
315
|
+
![半日後を予測](5bce935ae4fb0c36b8e5c659d1d61860.png)
|
316
316
|
|
317
317
|
![1日後を予測](7f21d79ed531abe56e1dbcc5ea06c19b.png)
|
318
318
|
|
1
画像の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -314,7 +314,7 @@
|
|
314
314
|
|
315
315
|
![12時間後を予測](0f8aeb15648281f773f8426fdc96dbf0.png)
|
316
316
|
|
317
|
-
![1日後を予測](
|
317
|
+
![1日後を予測](7f21d79ed531abe56e1dbcc5ea06c19b.png)
|
318
318
|
|
319
319
|
### 試したこと
|
320
320
|
|