Passed
Push — master ( 0ed08f...b87fc6 )
by Simon
10:25 queued 49s
created

test_memory_timeSave_0()   A

Complexity

Conditions 1

Size

Total Lines 31
Code Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 22
nop 0
dl 0
loc 31
rs 9.352
c 0
b 0
f 0
1
import time
2
import numpy as np
3
import pandas as pd
4
from sklearn.datasets import load_breast_cancer
5
from sklearn.model_selection import cross_val_score
6
from sklearn.tree import DecisionTreeClassifier
7
from sklearn.ensemble import GradientBoostingClassifier
8
9
10
from hyperactive import Hyperactive
11
12
13
def objective_function(opt):
14
    score = -opt["x1"] * opt["x1"]
15
    return score
16
17
18
search_space = {
19
    "x1": list(np.arange(0, 10, 1)),
20
}
21
22
23
def test_memory_timeSave_0():
24
    data = load_breast_cancer()
25
    X, y = data.data, data.target
26
27
    def objective_function(opt):
28
        dtc = DecisionTreeClassifier(
29
            min_samples_split=opt["min_samples_split"]
30
        )
31
        scores = cross_val_score(dtc, X, y, cv=5)
32
33
        return scores.mean()
34
35
    search_space = {
36
        "min_samples_split": np.arange(2, 20),
37
    }
38
39
    c_time1 = time.time()
40
    hyper = Hyperactive()
41
    hyper.add_search(objective_function, search_space, n_iter=100)
42
    hyper.run()
43
    diff_time1 = time.time() - c_time1
44
45
    c_time2 = time.time()
46
    hyper = Hyperactive()
47
    hyper.add_search(
48
        objective_function, search_space, n_iter=100, memory=False
49
    )
50
    hyper.run()
51
    diff_time2 = time.time() - c_time2
52
53
    assert diff_time1 < diff_time2 * 0.8
54
55
56
def test_memory_timeSave_1():
57
    data = load_breast_cancer()
58
    X, y = data.data, data.target
59
60
    def objective_function(opt):
61
        dtc = DecisionTreeClassifier(max_depth=opt["max_depth"])
62
        scores = cross_val_score(dtc, X, y, cv=5)
63
64
        return scores.mean()
65
66
    search_space = {
67
        "max_depth": list(np.arange(1, 101)),
68
    }
69
70
    results = pd.DataFrame(np.arange(1, 101), columns=["max_depth"])
71
    results["score"] = 0
72
73
    c_time1 = time.time()
74
    hyper = Hyperactive()
75
    hyper.add_search(
76
        objective_function, search_space, n_iter=300, memory_warm_start=results
77
    )
78
    hyper.run()
79
    diff_time1 = time.time() - c_time1
80
81
    assert diff_time1 < 1
82
83
84
def test_memory_warm_start():
85
    data = load_breast_cancer()
86
    X, y = data.data, data.target
87
88
    def objective_function(opt):
89
        dtc = DecisionTreeClassifier(
90
            max_depth=opt["max_depth"],
91
            min_samples_split=opt["min_samples_split"],
92
        )
93
        scores = cross_val_score(dtc, X, y, cv=5)
94
95
        return scores.mean()
96
97
    search_space = {
98
        "max_depth": list(np.arange(1, 10)),
99
        "min_samples_split": list(np.arange(2, 20)),
100
    }
101
102
    c_time1 = time.time()
103
    hyper0 = Hyperactive()
104
    hyper0.add_search(objective_function, search_space, n_iter=300)
105
    hyper0.run()
106
    diff_time1 = time.time() - c_time1
107
108
    c_time2 = time.time()
109
110
    results0 = hyper0.results(objective_function)
111
112
    hyper1 = Hyperactive()
113
    hyper1.add_search(
114
        objective_function,
115
        search_space,
116
        n_iter=300,
117
        memory_warm_start=results0,
118
    )
119
    hyper1.run()
120
121
    diff_time2 = time.time() - c_time2
122
123
    assert diff_time2 < diff_time1 * 0.5
124
125
126
def test_memory_warm_start_manual():
127
    data = load_breast_cancer()
128
    X, y = data.data, data.target
129
130
    def objective_function(opt):
131
        dtc = GradientBoostingClassifier(n_estimators=opt["n_estimators"],)
132
        scores = cross_val_score(dtc, X, y, cv=5)
133
134
        return scores.mean()
135
136
    search_space = {
137
        "n_estimators": list(np.arange(500, 502)),
138
    }
139
140
    c_time_1 = time.time()
141
    hyper = Hyperactive()
142
    hyper.add_search(objective_function, search_space, n_iter=1)
143
    hyper.run()
144
    diff_time_1 = time.time() - c_time_1
145
146
    memory_warm_start = pd.DataFrame(
147
        [[500, 0.9], [501, 0.91]], columns=["n_estimators", "score"]
148
    )
149
150
    c_time = time.time()
151
    hyper0 = Hyperactive()
152
    hyper0.add_search(
153
        objective_function,
154
        search_space,
155
        n_iter=10,
156
        memory_warm_start=memory_warm_start,
157
    )
158
    hyper0.run()
159
    diff_time = time.time() - c_time
160
161
    assert diff_time_1 > diff_time * 0.3
162
163