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

BaseExperiment.__init__()   A

Complexity

Conditions 1

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nop 1
dl 0
loc 2
rs 10
c 0
b 0
f 0
1
"""Base class for experiment."""
2
3
from skbase.base import BaseObject
4
5
6
class BaseExperiment(BaseObject):
7
    """Base class for experiment."""
8
9
    _tags = {
10
        "object_type": "experiment",
11
        "python_dependencies": None,
12
        "property:randomness": "random",  # randomized or deterministic
13
        # if deterministic, two calls of score will result in the same value
14
        # random = two calls may result in different values; same as "stochastic"
15
    }
16
17
    def __init__(self):
18
        super().__init__()
19
20
    def __call__(self, **kwargs):
21
        """Score parameters, with kwargs call."""
22
        score, _ = self.score(kwargs)
23
        return score
24
25
    @property
26
    def __name__(self):
27
        return type(self).__name__
28
29
    def paramnames(self):
30
        """Return the parameter names of the search.
31
32
        Returns
33
        -------
34
        list of str
35
            The parameter names of the search parameters.
36
        """
37
        return self._paramnames()
38
39
    def _paramnames(self):
40
        """Return the parameter names of the search.
41
42
        Returns
43
        -------
44
        list of str
45
            The parameter names of the search parameters.
46
        """
47
        raise NotImplementedError
48
49
    def score(self, params):
50
        """Score the parameters.
51
52
        Parameters
53
        ----------
54
        params : dict with string keys
55
            Parameters to score.
56
57
        Returns
58
        -------
59
        float
60
            The score of the parameters.
61
        dict
62
            Additional metadata about the search.
63
        """
64
        paramnames = self.paramnames()
65
        if not set(params.keys()) <= set(paramnames):
66
            raise ValueError("Parameters do not match.")
67
        return self._score(params)
68
69
    def _score(self, params):
70
        """Score the parameters.
71
72
        Parameters
73
        ----------
74
        params : dict with string keys
75
            Parameters to score.
76
77
        Returns
78
        -------
79
        float
80
            The score of the parameters.
81
        dict
82
            Additional metadata about the search.
83
        """
84
        raise NotImplementedError
85