GaussianScorer¶

Univariate Gaussian anomaly detector.

This is a supervised anomaly detector. It fits a Gaussian distribution to the target values. The anomaly score is then computed as so:

$score = 2 * \mid CDF(y) - 0.5 \mid$

This makes it so that the anomaly score is between 0 and 1.

Parameters¶

• window_size – defaults to None

Set this to fit the Gaussian distribution over a window of recent values.

• grace_period – defaults to 100

Number of samples before which a 0 is always returned. This is handy because the Gaussian distribution needs time to stabilize, and will likely produce overly high anomaly score for the first samples.

Examples¶

>>> import random
>>> from river import anomaly

>>> rng = random.Random(42)
>>> detector = anomaly.GaussianScorer()

>>> for y in (rng.gauss(0, 1) for _ in range(100)):
...     detector = detector.learn_one(None, y)

>>> detector.score_one(None, -3)
0.999477...

>>> detector.score_one(None, 3)
0.999153...

>>> detector.score_one(None, 0)
0.052665...

>>> detector.score_one(None, 0.5)
0.383717...


Methods¶

clone

Return a fresh estimator with the same parameters.

The clone has the same parameters but has not been updated with any data. This works by looking at the parameters from the class signature. Each parameter is either - recursively cloned if it's a River classes. - deep-copied via copy.deepcopy if not. If the calling object is stochastic (i.e. it accepts a seed parameter) and has not been seeded, then the clone will not be idempotent. Indeed, this method's purpose if simply to return a new instance with the same input parameters.

learn_one

Update the model.

Parameters

• _
• y (Union[bool, str, int, numbers.Number])

Returns

SupervisedAnomalyDetector: self

score_one

Return an outlier score.

A high score is indicative of an anomaly. A low score corresponds a normal observation.

Parameters

• _
• y (Union[bool, str, int, numbers.Number])

Returns

float: An anomaly score. A high score is indicative of an anomaly. A low score corresponds a