Skip to content

changepoints

ChangePointGenerator

Bases: GeneratorMixin

Base class for generators that generate changepoints in time-series data

Source code in badgers/generators/time_series/changepoints.py
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class ChangePointGenerator(GeneratorMixin):
    """
    Base class for generators that generate changepoints in time-series data
    """

    def __init__(self, random_generator=default_rng(seed=0), n_changepoints: int = 10):
        """
        :param random_generator: a random number generator
        :param n_outliers: the number of outliers to generate
        """
        self.random_generator = random_generator
        self.n_changepoints = n_changepoints
        self.changepoints = None

    @abc.abstractmethod
    def generate(self, X, y, **params) -> Tuple:
        pass

__init__(random_generator=default_rng(seed=0), n_changepoints=10)

:param random_generator: a random number generator :param n_outliers: the number of outliers to generate

Source code in badgers/generators/time_series/changepoints.py
14
15
16
17
18
19
20
21
def __init__(self, random_generator=default_rng(seed=0), n_changepoints: int = 10):
    """
    :param random_generator: a random number generator
    :param n_outliers: the number of outliers to generate
    """
    self.random_generator = random_generator
    self.n_changepoints = n_changepoints
    self.changepoints = None

RandomChangeInMeanGenerator

Bases: ChangePointGenerator

Generate randomly change in mean changepoints

Source code in badgers/generators/time_series/changepoints.py
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
class RandomChangeInMeanGenerator(ChangePointGenerator):
    """
    Generate randomly change in mean changepoints
    """

    def __init__(self, random_generator=default_rng(seed=0), n_changepoints: int = 10, min_change: float = -5,
                 max_change: float = 5):
        super().__init__(random_generator=random_generator, n_changepoints=n_changepoints)
        self.min_change = min_change
        self.max_change = max_change

    def generate(self, X, y, **params) -> Tuple:
        """

        :param X:
        :param y:
        :param params:
        :return:
        """
        # Generate change points
        self.changepoints = list(
            zip(
                self.random_generator.integers(int(0.05 * len(X)), int(0.95 * len(X)), size=self.n_changepoints),
                self.random_generator.uniform(self.min_change, self.max_change, size=self.n_changepoints)
            )
        )

        Xt = X.copy()

        for idx, change in self.changepoints:
            Xt[idx:] += change

        return Xt, y

generate(X, y, **params)

:param X: :param y: :param params: :return:

Source code in badgers/generators/time_series/changepoints.py
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
def generate(self, X, y, **params) -> Tuple:
    """

    :param X:
    :param y:
    :param params:
    :return:
    """
    # Generate change points
    self.changepoints = list(
        zip(
            self.random_generator.integers(int(0.05 * len(X)), int(0.95 * len(X)), size=self.n_changepoints),
            self.random_generator.uniform(self.min_change, self.max_change, size=self.n_changepoints)
        )
    )

    Xt = X.copy()

    for idx, change in self.changepoints:
        Xt[idx:] += change

    return Xt, y