Completed
Push — master ( b9a0a2...54ed88 )
by Simon
05:27
created

mlp_classification   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 1
eloc 34
dl 0
loc 50
rs 10
c 0
b 0
f 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A model() 0 17 1
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