質問編集履歴
1
題名の修正、コードの追記、試してみたことの追記、訓練データと検証データの分け方についての追記
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
説明変数複数行に対して目的変数を1行として読み込ませたいが、説明変数の入力範囲が大きく被ってしまう。
|
test
CHANGED
@@ -10,13 +10,15 @@
|
|
10
10
|
|
11
11
|
のサンプルコードを元に作っています。
|
12
12
|
|
13
|
-
180個×6種類の説明変数から1つの目的変数を出力したいのですが、下の
|
13
|
+
180個×6種類の説明変数から1つの目的変数を出力したいのですが、下の出力のように、説明変数の入力範囲が大きく被ってしまっています。
|
14
14
|
|
15
15
|
env_dataは説明変数が入っているデータ(54000,6)で、ea_dataは目的変数が入っているデータ(300,1)です。
|
16
16
|
|
17
|
+
説明変数180行に対して目的変数が1行となっているため、行数が異なっています。
|
18
|
+
|
17
19
|
env_dataはインデックス0~27000を訓練データ、27001~54000を検証データとして使っています。
|
18
20
|
|
19
|
-
|
21
|
+
訓練データと検証データの分け方を1:1としてしまいましたが、後ほど7:3や8:2などに修正する予定です。
|
20
22
|
|
21
23
|
### 読み込んでいる範囲
|
22
24
|
|
@@ -336,6 +338,82 @@
|
|
336
338
|
|
337
339
|
|
338
340
|
|
341
|
+
##### ③ ②のコードにwhileを追加
|
342
|
+
|
343
|
+
②で起こった問題を解決するために、以下のようにwhileを追加しました。
|
344
|
+
|
345
|
+
```Python3
|
346
|
+
|
347
|
+
for j, row in enumerate(rows):
|
348
|
+
|
349
|
+
k = j * 180
|
350
|
+
|
351
|
+
l = min_index + k
|
352
|
+
|
353
|
+
if l + lookback <= max_index + 1:
|
354
|
+
|
355
|
+
indices = range(l, l +lookback, step)
|
356
|
+
|
357
|
+
print(indices)
|
358
|
+
|
359
|
+
samples[j] = env_data[indices]
|
360
|
+
|
361
|
+
targets[j] = ea_data[j]
|
362
|
+
|
363
|
+
yield samples, targets
|
364
|
+
|
365
|
+
```
|
366
|
+
|
367
|
+
すると、以下のような出力が出ました。
|
368
|
+
|
369
|
+
```
|
370
|
+
|
371
|
+
range(27001, 27181, 6)
|
372
|
+
|
373
|
+
range(27181, 27361, 6)
|
374
|
+
|
375
|
+
range(27361, 27541, 6)
|
376
|
+
|
377
|
+
range(27541, 27721, 6)
|
378
|
+
|
379
|
+
range(27721, 27901, 6)
|
380
|
+
|
381
|
+
...
|
382
|
+
|
383
|
+
range(37261, 37441, 6)
|
384
|
+
|
385
|
+
range(37441, 37621, 6)
|
386
|
+
|
387
|
+
range(37621, 37801, 6)
|
388
|
+
|
389
|
+
range(27001, 27181, 6)
|
390
|
+
|
391
|
+
range(27181, 27361, 6)
|
392
|
+
|
393
|
+
...
|
394
|
+
|
395
|
+
range(37621, 37801, 6)
|
396
|
+
|
397
|
+
range(27001, 27181, 6)
|
398
|
+
|
399
|
+
range(27181, 27361, 6)
|
400
|
+
|
401
|
+
...
|
402
|
+
|
403
|
+
...
|
404
|
+
|
405
|
+
range(37261, 37441, 6)
|
406
|
+
|
407
|
+
range(37441, 37621, 6)
|
408
|
+
|
409
|
+
range(37621, 37801, 6)
|
410
|
+
|
411
|
+
```
|
412
|
+
|
413
|
+
このように、range(37621, 37801, 6)まで読み込んだ後に再びrange(27001, 27181, 6)から読み込むというループになっていました。上記の出力結果では省略しましたが、数え切れないくらい繰り返していました。初めに回したときは、同じように繰り返していましたが、終わりがrange(53821, 54001, 6)となっていました。しかし、再び回すと終わりがrange(37621, 37801, 6)となってしまい、それ以降何度回し直しても終わりがrange(37621, 37801, 6)となります。コードは変えていません。
|
414
|
+
|
415
|
+
|
416
|
+
|
339
417
|
また、初めのコードでもそうでしたが、出力されるrangeのスタートが検証データのスタートのインデックスとなっているのですが、これで正しいのでしょうか…。
|
340
418
|
|
341
419
|
### 補足情報(FW/ツールのバージョンなど)
|