teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

d

2019/02/21 16:12

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -8,4 +8,51 @@
8
8
  今回の「4つの説明変数による、一つの目的変数」というタスクであれば、それでも十分なパラメータがあると考えられます。
9
9
  過剰に増やしすぎると、過学習の原因になります。
10
10
 
11
- またマルチコアの CPU や GPU が2台以上ある場合、それらを有向に活用できるようなコードを意図して書かない限り (CPU であれば、マルチスレッドのプログラム)、シングルコアで動作するのでハードウェアの恩恵は受けられません。
11
+ またマルチコアの CPU や GPU が2台以上ある場合、それらを有向に活用できるようなコードを意図して書かない限り (CPU であれば、マルチスレッドのプログラム)、シングルコアで動作するのでハードウェアの恩恵は受けられません。
12
+
13
+ ## 検証したコード
14
+
15
+ ```python
16
+ import pandas as pd
17
+ df = pd.read_csv('data.csv')
18
+
19
+ from keras.models import Sequential
20
+ from keras.layers import Dense, BatchNormalization
21
+ from sklearn.model_selection import train_test_split
22
+
23
+ # データ分割
24
+ x_train, x_test, y_train, y_test = train_test_split(
25
+ df.values[:, :4], df.values[:, 4], test_size=0.2)
26
+
27
+ # モデル作成
28
+ model = Sequential()
29
+ model.add(Dense(64, input_dim=4, activation='relu'))
30
+ model.add(BatchNormalization())
31
+ model.add(Dense(128, activation='relu'))
32
+ model.add(BatchNormalization())
33
+ model.add(Dense(128, activation='relu'))
34
+ model.add(BatchNormalization())
35
+ model.add(Dense(128, activation='relu'))
36
+ model.add(BatchNormalization())
37
+ model.add(Dense(128, activation='relu'))
38
+ model.add(BatchNormalization())
39
+ model.add(Dense(64, activation='relu'))
40
+ model.add(BatchNormalization())
41
+ model.add(Dense(1, activation='linear'))
42
+ model.compile(loss='mae', optimizer='adam')
43
+
44
+ # 学習
45
+ history = model.fit(
46
+ x_train, y_train, batch_size=128, epochs=1000, validation_split=0.1, verbose=0)
47
+
48
+ # 結果
49
+ score = model.evaluate(x_test, y_test)
50
+ print(score) # 3.905887901720707
51
+
52
+ import seaborn as sns
53
+ sns.set()
54
+ # 目的変数の分布
55
+ sns.boxplot(x='PE', data=df)
56
+ ```
57
+
58
+ ![イメージ説明](2f538dfec73ea7d0f2980bfba52c4156.png)