Generate point outliers in time series¶
In [1]:
Copied!
import numpy as np
import matplotlib.pyplot as plt
from badgers.generators.time_series.outliers import LocalZScoreGenerator, RandomZerosGenerator
import numpy as np
import matplotlib.pyplot as plt
from badgers.generators.time_series.outliers import LocalZScoreGenerator, RandomZerosGenerator
Import data (using sktime)¶
In [2]:
Copied!
from sktime.datasets import load_airline
from sktime.datasets import load_airline
In [3]:
Copied!
X = load_airline()
t = X.index.to_timestamp()
X = load_airline()
t = X.index.to_timestamp()
In [4]:
Copied!
plt.plot(t, X.values)
plt.plot(t, X.values)
Out[4]:
[<matplotlib.lines.Line2D at 0x2040fb1ee10>]
Randomly change values to zero¶
In [5]:
Copied!
generator = RandomZerosGenerator(n_outliers=10)
generator = RandomZerosGenerator(n_outliers=10)
In [6]:
Copied!
Xt, _ = generator.generate(X.copy().values.reshape(-1, 1), None)
Xt, _ = generator.generate(X.copy().values.reshape(-1, 1), None)
In [7]:
Copied!
fig, axes = plt.subplots(2, sharex=True, sharey=True, figsize=(6,6))
axes[0].plot(t, X.values)
axes[0].set_title('Original data')
axes[1].plot(t, Xt)
axes[1].set_title('Transformed data')
plt.tight_layout();
fig, axes = plt.subplots(2, sharex=True, sharey=True, figsize=(6,6))
axes[0].plot(t, X.values)
axes[0].set_title('Original data')
axes[1].plot(t, Xt)
axes[1].set_title('Transformed data')
plt.tight_layout();
Generate local extreme values¶
In [8]:
Copied!
generator = LocalZScoreGenerator(n_outliers=10)
generator = LocalZScoreGenerator(n_outliers=10)
In [9]:
Copied!
Xt, _ = generator.generate(X.copy().values.reshape(-1, 1), None)
Xt, _ = generator.generate(X.copy().values.reshape(-1, 1), None)
C:\Users\siebert\PycharmProjects\badgers\venv\Lib\site-packages\badgers\generators\time_series\outliers.py:106: RuntimeWarning: Mean of empty slice. local_mean = local_window.mean(axis=0) C:\Users\siebert\PycharmProjects\badgers\venv\Lib\site-packages\numpy\core\_methods.py:184: RuntimeWarning: invalid value encountered in divide ret = um.true_divide( C:\Users\siebert\PycharmProjects\badgers\venv\Lib\site-packages\numpy\core\_methods.py:269: RuntimeWarning: Degrees of freedom <= 0 for slice ret = _var(a, axis=axis, dtype=dtype, out=out, ddof=ddof, C:\Users\siebert\PycharmProjects\badgers\venv\Lib\site-packages\numpy\core\_methods.py:226: RuntimeWarning: invalid value encountered in divide arrmean = um.true_divide(arrmean, div, out=arrmean, C:\Users\siebert\PycharmProjects\badgers\venv\Lib\site-packages\numpy\core\_methods.py:258: RuntimeWarning: invalid value encountered in divide ret = um.true_divide(
In [10]:
Copied!
fig, axes = plt.subplots(2, sharex=True, sharey=True, figsize=(6,6))
axes[0].plot(t, X.values)
axes[0].set_title('Original data')
axes[1].plot(t, Xt)
axes[1].set_title('Transformed data')
plt.tight_layout();
fig, axes = plt.subplots(2, sharex=True, sharey=True, figsize=(6,6))
axes[0].plot(t, X.values)
axes[0].set_title('Original data')
axes[1].plot(t, Xt)
axes[1].set_title('Transformed data')
plt.tight_layout();
In [ ]:
Copied!