回答編集履歴
1
d
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
|
+

|