1
|
|
|
import numpy as np |
2
|
|
|
from keras.models import Sequential |
3
|
|
|
from keras.layers import Dense, Dropout |
4
|
|
|
from keras.optimizers import RMSprop |
5
|
|
|
from keras.utils import to_categorical |
6
|
|
|
|
7
|
|
|
from sklearn.model_selection import train_test_split |
8
|
|
|
from sklearn.datasets import load_breast_cancer |
9
|
|
|
from hyperactive import Hyperactive |
10
|
|
|
|
11
|
|
|
data = load_breast_cancer() |
12
|
|
|
X, y = data.data, data.target |
13
|
|
|
y = to_categorical(y) |
14
|
|
|
|
15
|
|
|
|
16
|
|
|
def model(para, X, y): |
17
|
|
|
model = Sequential() |
18
|
|
|
model.add(Dense(para["layer0"], activation="relu")) |
19
|
|
|
model.add(Dropout(para["dropout0"])) |
20
|
|
|
model.add(Dense(para["layer1"], activation="relu")) |
21
|
|
|
model.add(Dropout(para["dropout1"])) |
22
|
|
|
model.add(Dense(2, activation="softmax")) |
23
|
|
|
|
24
|
|
|
model.compile( |
25
|
|
|
loss="categorical_crossentropy", optimizer=RMSprop(), metrics=["accuracy"] |
26
|
|
|
) |
27
|
|
|
|
28
|
|
|
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) |
29
|
|
|
model.fit(X_train, y_train, batch_size=128, epochs=10, verbose=1) |
30
|
|
|
score = model.evaluate(X_test, y_test, verbose=0) |
31
|
|
|
|
32
|
|
|
return score, model |
33
|
|
|
|
34
|
|
|
|
35
|
|
|
# this defines the model and hyperparameter search space |
36
|
|
|
search_config = { |
37
|
|
|
model: { |
38
|
|
|
"layer0": range(10, 301, 5), |
39
|
|
|
"layer1": range(10, 301, 5), |
40
|
|
|
"dropout0": np.arange(0.1, 1, 0.1), |
41
|
|
|
"dropout1": np.arange(0.1, 1, 0.1), |
42
|
|
|
} |
43
|
|
|
} |
44
|
|
|
|
45
|
|
|
|
46
|
|
|
opt = Hyperactive(search_config, n_iter=100, n_jobs=1) |
47
|
|
|
|
48
|
|
|
# search best hyperparameter for given data |
49
|
|
|
opt.fit(X, y) |
50
|
|
|
|