太棒了!FaceBook 开源全网第一个时序王器 Kats !

Posted Python学习与数据挖掘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了太棒了!FaceBook 开源全网第一个时序王器 Kats !相关的知识,希望对你有一定的参考价值。

欢迎关注 Python学习与数据挖掘,专注Python、数据分析、数据挖掘、好玩工具!

时间序列分析建模是数据科学和机器学习的一个重要的领域,在电子商务、金融、供应链管理、医学、气象、能源、天文等诸多领域有着广泛的应用。目前时间序列分析以及建模的技术非常多,但相对散乱,本次 FaceBook 开源了 Kats,它是一款轻量级的、易于使用的、通用的时间序列分析框架,包括:预测、异常检测、多元分析和特征提取嵌入。

Kats 是第一个开发标准并连接时间序列分析各个领域的综合 Python 库,用户可以在这里探索其时间序列数据的基本特征,预测未来值,监视异常,并将其合并到ML模型和pipeline中。它在时间序列的表现非常优秀,欢迎大家收藏学习,喜欢点赞支持。

在这里插入图片描述

简介

1.Kats的优势

Kats是一个分析时间序列数据的工具箱,特点是:

  • 轻量级;
  • 易于使用;
  • 通用;

可以用来执行时间序列分析。

2. Kats的功能

Kats的核心四大功能包括:

  • 模型预测:Kats提供了一套完整的预测工具,包括10+个单独的预测模型、ensembling、自监督学习(meta-learning)模型、backtesting、超参数调整和经验预测区间。
  • 检测:Kats支持检测时间序列数据的各种模式的功能,包括季节性、异常值、变化点和缓慢的趋势变化检测。
  • 特征提取与嵌入:Kats中的时间序列特征(TSFeature)提取模块可以产生65个具有明确统计定义的特征,这些特征可以应用于大多数机器学习(ML)模型,如分类和回归。
  • 使用的功能:Kats还提供了一组有用的实用程序,例如时间序列模拟器。

1、预测案例

# !pip install kats
import pandas as pd

from kats.consts import TimeSeriesData
from kats.models.prophet import ProphetModel, ProphetParams

# take `air_passengers` data as an example
air_passengers_df = pd.read_csv(
    "./data/air_passengers.csv",
    header=0,
    names=["time", "passengers"],
)
air_passengers_df.head()

在这里插入图片描述

# convert to TimeSeriesData object
air_passengers_ts = TimeSeriesData(air_passengers_df)
# create a model param instance
params = ProphetParams(seasonality_mode='multiplicative') # additive mode gives worse results
# create a prophet model instance
m = ProphetModel(air_passengers_ts, params)
# fit model simply by calling m.fit()
m.fit()
# make prediction for next 30 month
fcst = m.predict(steps=30, freq="MS")

INFO:fbprophet:Disabling weekly seasonality. Run prophet with weekly_seasonality=True to override this.
INFO:fbprophet:Disabling daily seasonality. Run prophet with daily_seasonality=True to override this.

fcst.tail()

在这里插入图片描述

2、时间序列检测案例

异常改变点的检测

import numpy as np
from kats.consts import TimeSeriesData
from kats.detectors.cusum_detection import CUSUMDetector

# simulate time series with increase
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)]),
    }
)

# convert to TimeSeriesData object
timeseries = TimeSeriesData(df_increase)

# run detector and find change points
change_points = CUSUMDetector(timeseries).detector()
df_increase.groupby('time')['increase'].first().plot()
change_points

[(TimeSeriesChangePoint(start_time: 2019-01-30 00:00:00, end_time: 2019-01-30 00:00:00, confidence: 1.0),
<kats.detectors.cusum_detection.CUSUMMetadata at 0x7fa9449fe910>)]

3、时间序列特征

# Initiate feature extraction class
from kats.tsfeatures.tsfeatures import TsFeatures
# take `air_passengers` data as an example
air_passengers_df = pd.read_csv(
    "./data/air_passengers.csv",
    header=0,
    names=["time", "passengers"],
)

# convert to TimeSeriesData object
air_passengers_ts = TimeSeriesData(air_passengers_df)

# calculate the TsFeatures
features = TsFeatures().transform(air_passengers_ts) 

参考文献

  • https://engineering.fb.com/2021/06/21/open-source/kats/
  • https://github.com/facebookresearch/Kats
  • Kats - Time Series Forecasting By Facebook

技术交流

欢迎转载、收藏、有所收获点赞支持一下!

在这里插入图片描述
目前开通了技术交流群,群友超过2000人,添加方式如下:

如下方式均可,添加时最好方式为:来源+兴趣方向,方便找到志同道合的朋友

  • 方式一、发送如下图片至微信,进行长按识别,回复加群;
  • 方式二、直接添加小助手微信号:pythoner666,备注:来自CSDN
  • 方式三、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

在这里插入图片描述

以上是关于太棒了!FaceBook 开源全网第一个时序王器 Kats !的主要内容,如果未能解决你的问题,请参考以下文章

全网最全梳理,Python 办公自动化这篇真的太棒了

机器学习太棒了!8 个开源自动化机器学习框架,轻松搞定机器学习!

太棒了!字节跳动工程师在GitHub开源了一份刷题总结,狂揽8.2K星,霸屏GitHub!

三十万字算法宝典,100张思维导图,Github上这份干货太棒了

太棒了 | 辞职之后,去了一趟新疆!

太棒了 | 辞职之后,去了一趟新疆!