回答編集履歴
5
fix link
test
CHANGED
@@ -144,7 +144,7 @@
|
|
144
144
|
|
145
145
|
今回コードに含まれていませんが,CSVファイルを見る限り座標が0になっている箇所は欠損値かと存じます,これらを補間する手法も多岐にわたるので調べて実装なさった方が良いでしょう.
|
146
146
|
|
147
|
-
[Google Search - 欠損値 補間](https://www.google.com/search?q=%E6%AC%A0%E6%90%8D%E5%80%A4+%E8%A3%9C%E9%96%93
|
147
|
+
[Google Search - 欠損値 補間](https://www.google.com/search?q=%E6%AC%A0%E6%90%8D%E5%80%A4+%E8%A3%9C%E9%96%93)
|
148
148
|
|
149
149
|
また,SIGNATEには[テニスの勝敗予測をする練習問題](https://signate.jp/competitions/118/data)があるので,初手で時系列データに取り組んでわけわからないまま進めるよりは,このような単純なテーブルデータから取り組んでみても良いでしょう.少なくとも勝敗予測できなければ,時系列データなんて予測できないと思います.
|
150
150
|
|
4
append answer
test
CHANGED
@@ -146,8 +146,11 @@
|
|
146
146
|
|
147
147
|
[Google Search - 欠損値 補間](https://www.google.com/search?q=%E6%AC%A0%E6%90%8D%E5%80%A4+%E8%A3%9C%E9%96%93&oq=%E6%AC%A0%E6%90%8D%E5%80%A4%E3%80%80%E8%A3%9C%E9%96%93)
|
148
148
|
|
149
|
-
また,SIGNATEには[テニスの勝敗予測をする練習問題](https://signate.jp/competitions/118/data)があるので,初手で時系列データに取り組んでわけわからないまま進めるよりは,このよう
|
149
|
+
また,SIGNATEには[テニスの勝敗予測をする練習問題](https://signate.jp/competitions/118/data)があるので,初手で時系列データに取り組んでわけわからないまま進めるよりは,このような単純なテーブルデータから取り組んでみても良いでしょう.少なくとも勝敗予測できなければ,時系列データなんて予測できないと思います.
|
150
150
|
|
151
151
|
## まとめ
|
152
152
|
|
153
153
|
* 出力データを記す位置は,入力データとの対応関係がとれるのであればどこでも良い
|
154
|
+
* フォルダごとにクラスで分ける,行末に記す,別ファイルに記す,データベースを利用する等
|
155
|
+
* Neural Networkの利用を前提としているなら,データの前処理の知識が必要不可欠であること.Garbage In, Garbage Outである.
|
156
|
+
* 初手で独自データの解析をすると痛い目を見る(見た)
|
3
fix answer
test
CHANGED
@@ -21,12 +21,15 @@
|
|
21
21
|
|
22
22
|
> データセットを作る際出力データをどこに記せば良いのか
|
23
23
|
|
24
|
-
出力データを記す位置は,入力データとの対応関係がとれるのであればどこでも良いです.どんな構造であれ,最終的にモデルに与える入力データ配列`x`の`i`番目にアクセスしたときの内容は,出力データ配列`y`の`i`番目の内容を意味するよう,プログラムを組むことになります.この対応関係が取り出せれば,上のようなディレクトリ構造であっても,質問のようなCSVファイルでも大丈夫です.自分がコードを書きやすいようにCSVファイルを作ったらいいんじゃないでしょうか.
|
24
|
+
**出力データを記す位置は,入力データとの対応関係がとれるのであればどこでも良い**です.どんな構造であれ,最終的にモデルに与える入力データ配列`x`の`i`番目にアクセスしたときの内容は,出力データ配列`y`の`i`番目の内容を意味するよう,プログラムを組むことになります.この対応関係が取り出せれば,上のようなディレクトリ構造であっても,質問のようなCSVファイルでも大丈夫です.自分がコードを書きやすいようにCSVファイルを作ったらいいんじゃないでしょうか.
|
25
25
|
|
26
26
|
今回の目的に応じたデータ加工の最終目標は,入力データの形状が`(100, 20, 28)`,出力データの形状が`(100, 3)`になることです.特に入力のデータ形状はLSTMが扱える形式になっています.データの`i`番目だけの単一のデータをモデルに与えた場合,次のように入出力されることが期待されます.
|
27
27
|
|
28
28
|
[![](https://mermaid.ink/img/pako:eNo1jsEKgzAMhl-l5KRQYbjLKMPTdtPL3M16yGw3y6xKV0ER333RzRxC-PN9JDNUndIg4OWwr1l6ky2jGgMJY2HK88MlQXzgLD6FEkIWRQnLSGiKra_rNL9n5c_aso2ZyJ92_8hXFzhY7SwaRdfmVZDga221BEGjQveWINuFuKFX6PVVGd85EE9sPpoDDr7Lp7YC4d2gd-hikD63f2r5Av-UQOI?type=png)](https://mermaid.live/edit#pako:eNo1jsEKgzAMhl-l5KRQYbjLKMPTdtPL3M16yGw3y6xKV0ER333RzRxC-PN9JDNUndIg4OWwr1l6ky2jGgMJY2HK88MlQXzgLD6FEkIWRQnLSGiKra_rNL9n5c_aso2ZyJ92_8hXFzhY7SwaRdfmVZDga221BEGjQveWINuFuKFX6PVVGd85EE9sPpoDDr7Lp7YC4d2gd-hikD63f2r5Av-UQOI)
|
29
29
|
|
30
|
+
この状態を目指せるデータセットを構築するまでのことです.
|
31
|
+
|
32
|
+
## 以下余談
|
30
33
|
以下にコードを例示します.画像で示しているdataset.csvを`pandas.read_csv("dataset.csv")`で読み込むことが可能です.ファイルパスは適宜環境に合わせてください.
|
31
34
|
|
32
35
|
[前回の質問](https://teratail.com/questions/p1sb76plr3idfk)で得られた解答にあるような,`chunksize = 20`の指定と同等の動作を,スライスを利用して実現しています.念のため,各行に割り振ったstraight, leftcross, rightcrossが20行(1データ分)の間で一致しなかった場合assertion errorを吐くようにしてあります.
|
@@ -144,3 +147,7 @@
|
|
144
147
|
[Google Search - 欠損値 補間](https://www.google.com/search?q=%E6%AC%A0%E6%90%8D%E5%80%A4+%E8%A3%9C%E9%96%93&oq=%E6%AC%A0%E6%90%8D%E5%80%A4%E3%80%80%E8%A3%9C%E9%96%93)
|
145
148
|
|
146
149
|
また,SIGNATEには[テニスの勝敗予測をする練習問題](https://signate.jp/competitions/118/data)があるので,初手で時系列データに取り組んでわけわからないまま進めるよりは,このように単純なテーブルデータから取り組んでみても良いでしょう.少なくともこれが予測できなければ,時系列データなんて予測できないと思います.
|
150
|
+
|
151
|
+
## まとめ
|
152
|
+
|
153
|
+
* 出力データを記す位置は,入力データとの対応関係がとれるのであればどこでも良い
|
2
fix answer
test
CHANGED
@@ -19,11 +19,11 @@
|
|
19
19
|
```
|
20
20
|
例えば,SIGNATEの練習問題[株価の推移予測](https://signate.jp/competitions/409)では,最後の行にのみ,出力したいデータが挿入されています.同様に,質問にあるように各行に出力したいデータを挿入したとしても,コードを記述して機械学習で扱えるデータに変換すればよいだけのことです.ちなみに,このような一般的でないデータの場合,学習可能な形式に変換するライブラリは存在しません.ひたすら自分でコードを書くしかないです.
|
21
21
|
|
22
|
-
> データセットを作る際
|
22
|
+
> データセットを作る際出力データをどこに記せば良いのか
|
23
23
|
|
24
|
-
出力データを
|
24
|
+
出力データを記す位置は,入力データとの対応関係がとれるのであればどこでも良いです.どんな構造であれ,最終的にモデルに与える入力データ配列`x`の`i`番目にアクセスしたときの内容は,出力データ配列`y`の`i`番目の内容を意味するよう,プログラムを組むことになります.この対応関係が取り出せれば,上のようなディレクトリ構造であっても,質問のようなCSVファイルでも大丈夫です.自分がコードを書きやすいようにCSVファイルを作ったらいいんじゃないでしょうか.
|
25
25
|
|
26
|
-
|
26
|
+
今回の目的に応じたデータ加工の最終目標は,入力データの形状が`(100, 20, 28)`,出力データの形状が`(100, 3)`になることです.特に入力のデータ形状はLSTMが扱える形式になっています.データの`i`番目だけの単一のデータをモデルに与えた場合,次のように入出力されることが期待されます.
|
27
27
|
|
28
28
|
[![](https://mermaid.ink/img/pako:eNo1jsEKgzAMhl-l5KRQYbjLKMPTdtPL3M16yGw3y6xKV0ER333RzRxC-PN9JDNUndIg4OWwr1l6ky2jGgMJY2HK88MlQXzgLD6FEkIWRQnLSGiKra_rNL9n5c_aso2ZyJ92_8hXFzhY7SwaRdfmVZDga221BEGjQveWINuFuKFX6PVVGd85EE9sPpoDDr7Lp7YC4d2gd-hikD63f2r5Av-UQOI?type=png)](https://mermaid.live/edit#pako:eNo1jsEKgzAMhl-l5KRQYbjLKMPTdtPL3M16yGw3y6xKV0ER333RzRxC-PN9JDNUndIg4OWwr1l6ky2jGgMJY2HK88MlQXzgLD6FEkIWRQnLSGiKra_rNL9n5c_aso2ZyJ92_8hXFzhY7SwaRdfmVZDga221BEGjQveWINuFuKFX6PVVGd85EE9sPpoDDr7Lp7YC4d2gd-hikD63f2r5Av-UQOI)
|
29
29
|
|
1
fix answer
test
CHANGED
@@ -17,15 +17,13 @@
|
|
17
17
|
├── 02.csv
|
18
18
|
└── ...
|
19
19
|
```
|
20
|
-
し
|
20
|
+
例えば,SIGNATEの練習問題[株価の推移予測](https://signate.jp/competitions/409)では,最後の行にのみ,出力したいデータが挿入されています.同様に,質問にあるように各行に出力したいデータを挿入したとしても,コードを記述して機械学習で扱えるデータに変換すればよいだけのことです.ちなみに,このような一般的でないデータの場合,学習可能な形式に変換するライブラリは存在しません.ひたすら自分でコードを書くしかないです.
|
21
21
|
|
22
22
|
> データセットを作る際正解データをどこに記せば良いのか
|
23
23
|
|
24
|
-
データ
|
24
|
+
出力データを示す位置は,入力データとの対応関係がとれるのであればどこでも良いです.最終的にモデルに与える入力データ配列`x`の`i`番目にアクセスしたときの内容は,出力データ配列`y`の`i`番目の内容を意味するよう,プログラムを組むことになります.この対応関係が取り出せれば,上のようなディレクトリ構造であっても,質問のようなCSVファイルでも大丈夫です.自分がコードを書きやすいようにCSVファイルを作ったらいいんじゃないでしょうか.
|
25
25
|
|
26
|
-
データ
|
27
|
-
|
28
|
-
どんなデータセットの用意の仕方であろうが,今回の目的に応じたデータ加工の最終目標は,入力データの形状が`(100, 20, 28)`,出力データの形状が`(100, 3)`になることです.特に入力のデータ形状はLSTMが扱える形式になっています.データの`i`番目だけの単一のデータをモデルに与えた場合,次のように入出力されることが期待されます.
|
26
|
+
どんなCSVの用意の仕方であろうが,今回の目的に応じたデータ加工の最終目標は,入力データの形状が`(100, 20, 28)`,出力データの形状が`(100, 3)`になることです.特に入力のデータ形状はLSTMが扱える形式になっています.データの`i`番目だけの単一のデータをモデルに与えた場合,次のように入出力されることが期待されます.
|
29
27
|
|
30
28
|
[![](https://mermaid.ink/img/pako:eNo1jsEKgzAMhl-l5KRQYbjLKMPTdtPL3M16yGw3y6xKV0ER333RzRxC-PN9JDNUndIg4OWwr1l6ky2jGgMJY2HK88MlQXzgLD6FEkIWRQnLSGiKra_rNL9n5c_aso2ZyJ92_8hXFzhY7SwaRdfmVZDga221BEGjQveWINuFuKFX6PVVGd85EE9sPpoDDr7Lp7YC4d2gd-hikD63f2r5Av-UQOI?type=png)](https://mermaid.live/edit#pako:eNo1jsEKgzAMhl-l5KRQYbjLKMPTdtPL3M16yGw3y6xKV0ER333RzRxC-PN9JDNUndIg4OWwr1l6ky2jGgMJY2HK88MlQXzgLD6FEkIWRQnLSGiKra_rNL9n5c_aso2ZyJ92_8hXFzhY7SwaRdfmVZDga221BEGjQveWINuFuKFX6PVVGd85EE9sPpoDDr7Lp7YC4d2gd-hikD63f2r5Av-UQOI)
|
31
29
|
|
@@ -34,7 +32,6 @@
|
|
34
32
|
[前回の質問](https://teratail.com/questions/p1sb76plr3idfk)で得られた解答にあるような,`chunksize = 20`の指定と同等の動作を,スライスを利用して実現しています.念のため,各行に割り振ったstraight, leftcross, rightcrossが20行(1データ分)の間で一致しなかった場合assertion errorを吐くようにしてあります.
|
35
33
|
|
36
34
|
```Python
|
37
|
-
from keras.utils import to_categorical
|
38
35
|
from sklearn.preprocessing import OneHotEncoder, StandardScaler
|
39
36
|
from sklearn.model_selection import train_test_split
|
40
37
|
|
@@ -60,9 +57,9 @@
|
|
60
57
|
|
61
58
|
x, y = list(), list() # 入力データxと出力データyに整形する.
|
62
59
|
for i in range(0, len(raw_data), 20):
|
63
|
-
x.append(raw_data[i: i + 20, :-1]) #
|
60
|
+
x.append(raw_data[i: i + 20, :-1]) # 入力データを取得
|
64
61
|
assert len(np.unique(raw_data[i: i + 20, -1])) == 1, f"wrong data format at {i} to {i+20}, {raw_data[i: i + 20]}"
|
65
|
-
y.append(raw_data[i, -1])
|
62
|
+
y.append(raw_data[i, -1]) # 出力データを取得
|
66
63
|
x = np.array(x).astype(np.float32)
|
67
64
|
print(x.shape) # (100, 20, 28) になっているはず.100件,タイムスタンプ20点,特徴量28個を意味する
|
68
65
|
|