Passed
Push — master ( 44bd28...268666 )
by Simon
03:57
created

tests.test_memory   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 134
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 88
dl 0
loc 134
rs 10
c 0
b 0
f 0
wmc 5

5 Functions

Rating   Name   Duplication   Size   Complexity  
A objective_function() 0 3 1
A test_memory_warm_start_manual() 0 26 1
A test_memory_timeSave_1() 0 23 1
A test_memory_timeSave_0() 0 27 1
A test_memory_warm_start() 0 31 1
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 gradient_free_optimizers import RandomSearchOptimizer
8
from sklearn.ensemble import GradientBoostingClassifier
9
10
11
def objective_function(para):
12
    score = -para["x1"] * para["x1"]
13
    return score
14
15
16
search_space = {
17
    "x1": np.arange(0, 10, 1),
18
}
19
20
21
def test_memory_timeSave_0():
22
    data = load_breast_cancer()
23
    X, y = data.data, data.target
24
25
    def objective_function(para):
26
        dtc = DecisionTreeClassifier(
27
            min_samples_split=para["min_samples_split"]
28
        )
29
        scores = cross_val_score(dtc, X, y, cv=5)
30
31
        return scores.mean()
32
33
    search_space = {
34
        "min_samples_split": np.arange(2, 20),
35
    }
36
37
    c_time1 = time.time()
38
    opt = RandomSearchOptimizer(search_space)
39
    opt.search(objective_function, n_iter=100)
40
    diff_time1 = time.time() - c_time1
41
42
    c_time2 = time.time()
43
    opt = RandomSearchOptimizer(search_space)
44
    opt.search(objective_function, n_iter=100, memory=False)
45
    diff_time2 = time.time() - c_time2
46
47
    assert diff_time1 < diff_time2 * 0.8
48
49
50
def test_memory_timeSave_1():
51
    data = load_breast_cancer()
52
    X, y = data.data, data.target
53
54
    def objective_function(para):
55
        dtc = DecisionTreeClassifier(max_depth=para["max_depth"])
56
        scores = cross_val_score(dtc, X, y, cv=5)
57
58
        return scores.mean()
59
60
    search_space = {
61
        "max_depth": np.arange(1, 101),
62
    }
63
64
    results = pd.DataFrame(np.arange(1, 101), columns=["max_depth"])
65
    results["score"] = 0
66
67
    c_time1 = time.time()
68
    opt = RandomSearchOptimizer(search_space)
69
    opt.search(objective_function, n_iter=300, memory_warm_start=results)
70
    diff_time1 = time.time() - c_time1
71
72
    assert diff_time1 < 1
73
74
75
def test_memory_warm_start():
76
    data = load_breast_cancer()
77
    X, y = data.data, data.target
78
79
    def objective_function(para):
80
        dtc = DecisionTreeClassifier(
81
            max_depth=para["max_depth"],
82
            min_samples_split=para["min_samples_split"],
83
        )
84
        scores = cross_val_score(dtc, X, y, cv=5)
85
86
        return scores.mean()
87
88
    search_space = {
89
        "max_depth": np.arange(1, 10),
90
        "min_samples_split": np.arange(2, 20),
91
    }
92
93
    c_time1 = time.time()
94
    opt0 = RandomSearchOptimizer(search_space)
95
    opt0.search(objective_function, n_iter=300)
96
    diff_time1 = time.time() - c_time1
97
98
    c_time2 = time.time()
99
    opt1 = RandomSearchOptimizer(search_space)
100
    opt1.search(objective_function, n_iter=300, memory_warm_start=opt0.results)
101
    diff_time2 = time.time() - c_time2
102
103
    print("\n opt0.results \n", opt0.results)
104
105
    assert diff_time2 < diff_time1 * 0.5
106
107
108
def test_memory_warm_start_manual():
109
    data = load_breast_cancer()
110
    X, y = data.data, data.target
111
112
    def objective_function(para):
113
        dtc = GradientBoostingClassifier(n_estimators=para["n_estimators"],)
114
        scores = cross_val_score(dtc, X, y, cv=5)
115
116
        return scores.mean()
117
118
    search_space = {
119
        "n_estimators": np.arange(500, 502),
120
    }
121
122
    memory_warm_start = pd.DataFrame(
123
        [[500, 0.9], [501, 0.91]], columns=["n_estimators", "score"]
124
    )
125
126
    c_time = time.time()
127
    opt = RandomSearchOptimizer(search_space)
128
    opt.search(
129
        objective_function, n_iter=10, memory_warm_start=memory_warm_start
130
    )
131
    diff_time = time.time() - c_time
132
133
    assert diff_time < 1
134
135