|
15 | 15 | class EDDMConfig(BaseSPCConfig): |
16 | 16 | """EDDM (Early drift detection method) [baena2006early]_ configuration. |
17 | 17 |
|
| 18 | + :param alpha: warning zone value, defaults to 0.95 |
| 19 | + :type alpha: float |
| 20 | + :param beta: change zone value, defaults to 0.9 |
| 21 | + :type beta: float |
| 22 | + :param level: level factor, defaults to 2.0 |
| 23 | + :type level: float |
| 24 | + :param min_num_misclassified_instances: minimum numbers of instances to start looking for changes, defaults to 30 |
| 25 | + :type min_num_misclassified_instances: int |
| 26 | +
|
18 | 27 | :References: |
19 | 28 |
|
20 | 29 | .. [baena2006early] Baena-Garcıa, Manuel, et al. "Early drift detection method." |
21 | 30 | Fourth international workshop on knowledge discovery from data streams. |
22 | 31 | Vol. 6. 2006. |
23 | | - """ |
| 32 | + """ # noqa: E501 |
24 | 33 |
|
25 | | - def __init__( |
| 34 | + def __init__( # noqa: D107 |
26 | 35 | self, |
27 | 36 | alpha: float = 0.95, |
28 | 37 | beta: float = 0.9, |
29 | 38 | level: float = 2.0, |
30 | 39 | min_num_misclassified_instances: int = 30, |
31 | 40 | ) -> None: |
32 | | - """Init method. |
33 | | -
|
34 | | - :param alpha: warning zone value |
35 | | - :type alpha: float |
36 | | - :param beta: change zone value |
37 | | - :type beta: float |
38 | | - :param level: level factor |
39 | | - :type level: float |
40 | | - :param min_num_misclassified_instances: minimum numbers of instances |
41 | | - to start looking for changes |
42 | | - :type min_num_misclassified_instances: int |
43 | | - """ |
44 | 41 | super().__init__() |
45 | 42 | self.alpha = alpha |
46 | 43 | self.beta = beta |
@@ -136,30 +133,51 @@ def min_num_misclassified_instances(self, value: int) -> None: |
136 | 133 | class EDDM(BaseSPC): |
137 | 134 | """EDDM (Early drift detection method) [baena2006early]_ detector. |
138 | 135 |
|
| 136 | + :param config: configuration object of the detector, defaults to None. If None, the default configuration of :class:`EDDMConfig` is used. |
| 137 | + :type config: Optional[EDDMConfig] |
| 138 | + :param callbacks: callbacks, defaults to None |
| 139 | + :type callbacks: Optional[Union[BaseCallbackStreaming, List[BaseCallbackStreaming]]] |
| 140 | +
|
| 141 | + :Note: |
| 142 | + :func:`update` method expects to receive a value of 0 if the instance is correctly classified (no error) and 1 otherwise (error). |
| 143 | +
|
139 | 144 | :References: |
140 | 145 |
|
141 | 146 | .. [baena2006early] Baena-Garcıa, Manuel, et al. "Early drift detection method." |
142 | 147 | Fourth international workshop on knowledge discovery from data streams. |
143 | 148 | Vol. 6. 2006. |
144 | | - """ |
| 149 | +
|
| 150 | + :Example: |
| 151 | +
|
| 152 | + >>> from frouros.detectors.concept_drift import EDDM |
| 153 | + >>> import numpy as np |
| 154 | + >>> np.random.seed(seed=31) |
| 155 | + >>> dist_a = np.random.binomial(n=1, p=0.6, size=1000) |
| 156 | + >>> dist_b = np.random.binomial(n=1, p=0.8, size=1000) |
| 157 | + >>> stream = np.concatenate((dist_a, dist_b)) |
| 158 | + >>> detector = EDDM() |
| 159 | + >>> warning_flag = False |
| 160 | + >>> for i, value in enumerate(stream): |
| 161 | + ... _ = detector.update(value=value) |
| 162 | + ... if detector.drift: |
| 163 | + ... print(f"Change detected at index {i}") |
| 164 | + ... break |
| 165 | + ... if not warning_flag and detector.warning: |
| 166 | + ... print(f"Warning detected at index {i}") |
| 167 | + ... warning_flag = True |
| 168 | + Warning detected at index 39 |
| 169 | + Change detected at index 1294 |
| 170 | + """ # noqa: E501 |
145 | 171 |
|
146 | 172 | config_type = EDDMConfig # type: ignore |
147 | 173 |
|
148 | | - def __init__( |
| 174 | + def __init__( # noqa: D107 |
149 | 175 | self, |
150 | 176 | config: Optional[EDDMConfig] = None, |
151 | 177 | callbacks: Optional[ |
152 | 178 | Union[BaseCallbackStreaming, List[BaseCallbackStreaming]] |
153 | 179 | ] = None, |
154 | 180 | ) -> None: |
155 | | - """Init method. |
156 | | -
|
157 | | - :param config: configuration parameters |
158 | | - :type config: Optional[EDDMConfig] |
159 | | - :param callbacks: callbacks |
160 | | - :type callbacks: Optional[Union[BaseCallbackStreaming, |
161 | | - List[BaseCallbackStreaming]]] |
162 | | - """ |
163 | 181 | # mean_distance_error = 0.0 |
164 | 182 | super().__init__( |
165 | 183 | config=config, |
|
0 commit comments