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

tests.test_hyperactive_api.test_n_jobs()   A

Complexity

Conditions 2

Size

Total Lines 10
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 8
nop 0
dl 0
loc 10
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_max_time():
39
    search = {
40
        "model": model,
41
        "search_space": search_space,
42
    }
43
    _base_test(search, time=0.01)
44
45
46
def test_init_para():
47
    search = {
48
        "model": model,
49
        "search_space": search_space,
50
    }
51
52
    init_para1 = {
53
        "max_depth": 3,
54
        "min_samples_split": 3,
55
    }
56
    init_para_list = [[init_para1]]
57
    for init_para in init_para_list:
58
        search["init_para"] = init_para
59
        _base_test(search)
60
61
62
def test_verbosity():
63
    search = {
64
        "model": model,
65
        "search_space": search_space,
66
    }
67
68
    verbosity_list = [0, 1, 2, 3]
69
    for verbosity in verbosity_list:
70
        _base_test(search, opt_args={"verbosity": verbosity})
71
72
73
def test_n_jobs():
74
    search = {
75
        "model": model,
76
        "search_space": search_space,
77
    }
78
79
    n_jobs_list = [1, 2, 4, 10, -1]
80
    for n_jobs in n_jobs_list:
81
        search["n_jobs"] = n_jobs
82
        _base_test(search)
83
84
85
def test_positional_args():
86
    search = {
87
        "model": model,
88
        "search_space": search_space,
89
    }
90
    _base_test(search)
91
92
93
def test_n_iter():
94
    search = {
95
        "model": model,
96
        "search_space": search_space,
97
    }
98
99
    n_iter_list = [0, 1, 2, 4, 10, 100]
100
    for n_iter in n_iter_list:
101
        search["n_iter"] = n_iter
102
        _base_test(search)
103
104
105
def test_memory():
106
    search = {
107
        "model": model,
108
        "search_space": search_space,
109
    }
110
111
    memory_list = [False, "short"]
112
    for memory in memory_list:
113
        search["memory"] = memory
114
        _base_test(search)
115
116