Passed
Push — master ( 193da7...4bb259 )
by Simon
01:36 queued 11s
created

tests.test_optimizers.model()   A

Complexity

Conditions 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nop 3
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
# Author: Simon Blanke
2
# Email: [email protected]
3
# License: MIT License
4
5
import numpy as np
6
7
from sklearn.datasets import load_iris
8
from sklearn.model_selection import cross_val_score
9
from sklearn.tree import DecisionTreeClassifier
10
11
from hyperactive import Hyperactive
12
13
data = load_iris()
14
X, y = data.data, data.target
15
16
17
def model(para, X, y):
18
    dtc = DecisionTreeClassifier(
19
        max_depth=para["max_depth"], min_samples_split=para["min_samples_split"],
20
    )
21
    scores = cross_val_score(dtc, X, y, cv=2)
22
23
    return scores.mean()
24
25
26
search_space = {
27
    "max_depth": range(1, 21),
28
    "min_samples_split": range(2, 21),
29
}
30
31
32
def _base_test(search, opt_args={}, time=None):
33
    opt = Hyperactive(X, y, **opt_args)
34
    opt.add_search(**search)
35
    opt.run(time)
36
37
38
def test_HillClimbingOptimizer():
39
    search = {
40
        "model": model,
41
        "function_parameter": {"features": X, "target": y},
42
        "search_space": search_space,
43
        "n_iter": 15,
44
        "optimizer": "HillClimbing",
45
    }
46
47
    _base_test(search)
48
49
50
def test_StochasticHillClimbingOptimizer():
51
    search = {
52
        "model": model,
53
        "function_parameter": {"features": X, "target": y},
54
        "search_space": search_space,
55
        "n_iter": 15,
56
        "optimizer": "StochasticHillClimbing",
57
    }
58
59
    _base_test(search)
60
61
62
def test_TabuOptimizer():
63
    search = {
64
        "model": model,
65
        "function_parameter": {"features": X, "target": y},
66
        "search_space": search_space,
67
        "n_iter": 15,
68
        "optimizer": "TabuSearch",
69
    }
70
71
    _base_test(search)
72
73
74
def test_RandomSearchOptimizer():
75
    search = {
76
        "model": model,
77
        "function_parameter": {"features": X, "target": y},
78
        "search_space": search_space,
79
        "n_iter": 15,
80
        "optimizer": "RandomSearch",
81
    }
82
83
    _base_test(search)
84
85
86
def test_RandomRestartHillClimbingOptimizer():
87
    search = {
88
        "model": model,
89
        "function_parameter": {"features": X, "target": y},
90
        "search_space": search_space,
91
        "n_iter": 15,
92
        "optimizer": "RandomRestartHillClimbing",
93
    }
94
95
    _base_test(search)
96
97
98
def test_RandomAnnealingOptimizer():
99
    search = {
100
        "model": model,
101
        "function_parameter": {"features": X, "target": y},
102
        "search_space": search_space,
103
        "n_iter": 15,
104
        "optimizer": "RandomAnnealing",
105
    }
106
107
    _base_test(search)
108
109
110
def test_SimulatedAnnealingOptimizer():
111
    search = {
112
        "model": model,
113
        "function_parameter": {"features": X, "target": y},
114
        "search_space": search_space,
115
        "n_iter": 15,
116
        "optimizer": "SimulatedAnnealing",
117
    }
118
119
    _base_test(search)
120
121
122
def test_StochasticTunnelingOptimizer():
123
    search = {
124
        "model": model,
125
        "function_parameter": {"features": X, "target": y},
126
        "search_space": search_space,
127
        "n_iter": 15,
128
        "optimizer": "StochasticTunneling",
129
    }
130
131
    _base_test(search)
132
133
134
def test_ParallelTemperingOptimizer():
135
    search = {
136
        "model": model,
137
        "function_parameter": {"features": X, "target": y},
138
        "search_space": search_space,
139
        "n_iter": 15,
140
        "optimizer": "ParallelTempering",
141
    }
142
143
    _base_test(search)
144
145
146
def test_ParticleSwarmOptimizer():
147
    search = {
148
        "model": model,
149
        "function_parameter": {"features": X, "target": y},
150
        "search_space": search_space,
151
        "n_iter": 15,
152
        "optimizer": "ParticleSwarm",
153
    }
154
155
    _base_test(search)
156
157
158
def test_EvolutionStrategyOptimizer():
159
    search = {
160
        "model": model,
161
        "function_parameter": {"features": X, "target": y},
162
        "search_space": search_space,
163
        "n_iter": 15,
164
        "optimizer": "EvolutionStrategy",
165
    }
166
167
    _base_test(search)
168
169
170
def test_BayesianOptimizer():
171
    search = {
172
        "model": model,
173
        "function_parameter": {"features": X, "target": y},
174
        "search_space": search_space,
175
        "n_iter": 15,
176
        "optimizer": "Bayesian",
177
    }
178
179
    _base_test(search)
180
181
182
def test_TPE():
183
    search = {
184
        "model": model,
185
        "function_parameter": {"features": X, "target": y},
186
        "search_space": search_space,
187
        "n_iter": 15,
188
        "optimizer": "TPE",
189
    }
190
191
    _base_test(search)
192
193
194
def test_DecisionTreeOptimizer():
195
    search = {
196
        "model": model,
197
        "function_parameter": {"features": X, "target": y},
198
        "search_space": search_space,
199
        "n_iter": 15,
200
        "optimizer": "DecisionTree",
201
    }
202
203
    _base_test(search)
204