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

tests.test_general_optimizer_api.test_optimizer()   A

Complexity

Conditions 2

Size

Total Lines 27
Code Lines 24

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 24
nop 0
dl 0
loc 27
rs 9.304
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 Optimizer
12
13
data = load_iris()
14
X, y = data.data, data.target
15
16
17
def objective_function(para):
18
    dtc = DecisionTreeClassifier(
19
        max_depth=para["max_depth"], min_samples_split=para["min_samples_split"],
20
    )
21
    scores = cross_val_score(dtc, para["features"], para["target"], 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 = Optimizer(**opt_args)
34
    opt.add_search(**search)
35
    opt.run(time)
36
37
38
def test_max_time():
39
    search = {
40
        "objective_function": objective_function,
41
        "function_parameter": {"features": X, "target": y},
42
        "search_space": search_space,
43
    }
44
    _base_test(search, time=0.01)
45
46
47
def test_init_para():
48
    search = {
49
        "objective_function": objective_function,
50
        "function_parameter": {"features": X, "target": y},
51
        "search_space": search_space,
52
    }
53
54
    init_para1 = {
55
        "max_depth": 3,
56
        "min_samples_split": 3,
57
    }
58
    init_para_list = [[init_para1]]
59
    for init_para in init_para_list:
60
        search["init_para"] = init_para
61
        _base_test(search)
62
63
64
def test_verbosity():
65
    search = {
66
        "objective_function": objective_function,
67
        "function_parameter": {"features": X, "target": y},
68
        "search_space": search_space,
69
    }
70
71
    verbosity_list = [0, 1, 2, 3]
72
    for verbosity in verbosity_list:
73
        _base_test(search, opt_args={"verbosity": verbosity})
74
75
76
def test_n_jobs():
77
    search = {
78
        "objective_function": objective_function,
79
        "function_parameter": {"features": X, "target": y},
80
        "search_space": search_space,
81
    }
82
83
    n_jobs_list = [1, 2, 4, 10, -1]
84
    for n_jobs in n_jobs_list:
85
        search["n_jobs"] = n_jobs
86
        _base_test(search)
87
88
89
def test_positional_args():
90
    search = {
91
        "objective_function": objective_function,
92
        "function_parameter": {"features": X, "target": y},
93
        "search_space": search_space,
94
    }
95
    _base_test(search)
96
97
98
def test_n_iter():
99
    search = {
100
        "objective_function": objective_function,
101
        "function_parameter": {"features": X, "target": y},
102
        "search_space": search_space,
103
    }
104
105
    n_iter_list = [0, 1, 2, 4, 10, 100]
106
    for n_iter in n_iter_list:
107
        search["n_iter"] = n_iter
108
        _base_test(search)
109
110
111
def test_memory():
112
    search = {
113
        "objective_function": objective_function,
114
        "function_parameter": {"features": X, "target": y},
115
        "search_space": search_space,
116
    }
117
118
    memory_list = [False, "short"]
119
    for memory in memory_list:
120
        search["memory"] = memory
121
        _base_test(search)
122
123