Description
Kats is a toolkit to analyze time series data, a lightweight, easy-to-use, and generalizable framework to perform time series analysis. Time series analysis is an essential component of Data Science and Engineering work at industry, from understanding the key statistics and characteristics, detecting regressions and anomalies, to forecasting future trends. Kats aims to provide the one-stop shop for time series analysis, including detection, forecasting, feature extraction/embedding, multivariate analysis, etc.
Kats is released by Facebook's Infrastructure Data Science team. It is available for download on PyPI.
Important links
Installation in Python
Kats is on PyPI, so you can use pip
to install it.
pip install --upgrade pip
pip install kats
If you need only a small subset of Kats, you can install a minimal version of Kats with
MINIMAL_KATS=1 pip install kats
which omits many dependencies (everything in test_requirements.txt
).
However, this will disable many functionalities and cause import kats
to log
warnings. See setup.py
for full details and options.
Examples
Here are a few sample snippets from a subset of Kats offerings:
Forecasting
Using Prophet
model to forecast the air_passengers
data set.
import pandas as pd
from kats.consts import TimeSeriesData
from kats.models.prophet import ProphetModel, ProphetParams
air_passengers_df = pd.read_csv(
"../kats/data/air_passengers.csv",
header=0,
names=["time", "passengers"],
)
air_passengers_ts = TimeSeriesData(air_passengers_df)
params = ProphetParams(seasonality_mode='multiplicative')
m = ProphetModel(air_passengers_ts, params)
m.fit()
fcst = m.predict(steps=30, freq="MS")
Detection
Using CUSUM
detection algorithm on simulated data set.
import numpy as np
import pandas as pd
from kats.consts import TimeSeriesData
from kats.detectors.cusum_detection import CUSUMDetector
np.random.seed(10)
df_increase = pd.DataFrame(
{
'time': pd.date_range('2019-01-01', '2019-03-01'),
'increase':np.concatenate([np.random.normal(1,0.2,30), np.random.normal(2,0.2,30)]),
}
)
timeseries = TimeSeriesData(df_increase)
change_points = CUSUMDetector(timeseries).detector()
TSFeatures
We can extract meaningful features from the given time series data
import pandas as pd
from kats.consts import TimeSeriesData
from kats.tsfeatures.tsfeatures import TsFeatures
air_passengers_df = pd.read_csv(
"../kats/data/air_passengers.csv",
header=0,
names=["time", "passengers"],
)
air_passengers_ts = TimeSeriesData(air_passengers_df)
features = TsFeatures().transform(air_passengers_ts)
Changelog
Version 0.2.0
- Forecasting
- Added global model, a neural network forecasting model
- Added global model tutorial
- Consolidated backtesting APIs and some minor bug fixes
- Detection
- Added model optimizer for anomaly/ changepoint detection
- Added evaluators for anomaly/changepoint detection
- Improved simulators, to build synthetic data and inject anomalies
- Added new detectors: ProphetTrendDetector, Dynamic Time Warping based detectors
- Support for meta-learning, to recommend anomaly detection algorithms and parameters for your dataset
- Standardized API for some of our legacy detectors: OutlierDetector, MKDetector
- Support for Seasonality Removal in StatSigDetector
- TsFeatures
- Added time-based features
- Others
- Bug fixes, code coverage improvement, etc.
Version 0.1.0
Contributors
Kats is a project with several skillful researchers and engineers contributing to it.
Kats is currently maintained by Xiaodong Jiang with major contributions coming
from many talented individuals in various forms and means. A non-exhaustive but growing list needs to mention: Sudeep Srivastava, Sourav Chatterjee, Jeff Handler, Rohan Bopardikar, Dawei Li, Yanjun Lin, Yang Yu, Michael Brundage, Caner Komurlu, Rakshita Nagalla, Zhichao Wang, Hechao Sun, Peng Gao, Wei Cheung, Jun Gao, Qi Wang, Morteza Kazemi, Tihamér Levendovszky, Jian Zhang, Ahmet Koylan, Kun Jiang, Aida Shoydokova, Ploy Temiyasathit, Sean Lee, Nikolay Pavlovich Laptev, Peiyi Zhang, Emre Yurtbay, Daniel Dequech, Rui Yan, William Luo, Marius Guerard, and Pietari Pulkkinen.
License
Kats is licensed under the MIT license.