Passed
Pull Request — master (#101)
by Simon
01:37
created

example.SklearnExperiment.setup()   A

Complexity

Conditions 1

Size

Total Lines 5
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nop 5
dl 0
loc 5
rs 10
c 0
b 0
f 0
1
import numpy as np
2
from sklearn.datasets import load_diabetes
3
from sklearn.tree import DecisionTreeRegressor
4
from sklearn.model_selection import cross_val_score
5
6
from hyperactive.search_config import SearchConfig
7
from hyperactive.optimizers import HillClimbingOptimizer
8
9
from hyperactive.base import BaseExperiment
10
11
12
class SklearnExperiment(BaseExperiment):
13
    def setup(self, estimator, X, y, cv=5):
14
        self.estimator = estimator
15
        self.X = X
16
        self.y = y
17
        self.cv = cv
18
19
    def _score(self, params):
20
        model = self.estimator(**params)
21
        scores = cross_val_score(model, self.X, self.y, cv=self.cv)
22
        return scores.mean()
23
24
25
data = load_diabetes()
26
X, y = data.data, data.target
27
28
29
search_config = SearchConfig(
30
    max_depth=list(np.arange(2, 15, 1)),
31
    min_samples_split=list(np.arange(2, 25, 2)),
32
)
33
34
experiment = SklearnExperiment()
35
experiment.setup(DecisionTreeRegressor, X, y, cv=4)
36
37
optimizer1 = HillClimbingOptimizer()
38
optimizer1.add_search(experiment, search_config, n_iter=100, n_jobs=2)
39
optimizer1.run()
40