Passed
Pull Request — master (#110)
by
unknown
01:31
created

hyperactive.base._optimizer   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 69
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 26
dl 0
loc 69
rs 10
c 0
b 0
f 0
wmc 7

5 Methods

Rating   Name   Duplication   Size   Complexity  
A BaseOptimizer.run() 0 12 1
A BaseOptimizer.__init__() 0 5 1
A BaseOptimizer.add_search() 0 15 2
A BaseOptimizer.get_experiment() 0 9 1
A BaseOptimizer.get_search_config() 0 13 2
1
"""Base class for optimizer."""
2
3
from skbase.base import BaseObject
4
5
6
class BaseOptimizer(BaseObject):
7
    """Base class for optimizer."""
8
9
    _search_config_names = []
10
11
    def __init__(self):
12
        super().__init__()
13
        assert hasattr(self, "experiment"), "Optimizer must have an experiment."
14
        search_config = self.get_params()
15
        self._experiment = search_config.pop("experiment", None)
16
17
    def add_search(self, experiment, **search_config):
18
        """Add a new optimization search process with specified parameters.
19
20
        Parameters
21
        ----------
22
        experiment : BaseExperiment
23
            The experiment to optimize parameters for.
24
        search_config : dict with str keys
25
            The search configuration dictionary.
26
        """
27
        self._experiment = experiment
28
        if not hasattr(self, "_search_config_update"):
29
            self._search_config_update = search_config
30
        else:
31
            self._search_config_update.update(search_config)
32
33
    def get_search_config(self):
34
        """Get the search configuration.
35
36
        Returns
37
        -------
38
        dict with str keys
39
            The search configuration dictionary.
40
        """
41
        search_config = self.get_params(deep=False)
42
        search_config.pop("experiment", None)
43
        if hasattr(self, "_search_config_update"):
44
            search_config.update(self._search_config_update)
45
        return search_config
46
47
    def get_experiment(self):
48
        """Get the experiment.
49
50
        Returns
51
        -------
52
        BaseExperiment
53
            The experiment to optimize parameters for.
54
        """
55
        return self._experiment
56
57
    def run(self):
58
        """Run the optimization search process.
59
60
        Returns
61
        -------
62
        best_params : dict
63
            The best parameters found during the optimization process.
64
        """
65
        experiment = self.get_experiment()
66
        search_config = self.get_search_config()
67
68
        return self._run(experiment, **search_config)
69