Python教程

【Python】包推荐:时间序列分析工具包

本文主要是介绍【Python】包推荐:时间序列分析工具包,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

3个Python时间序列分析工具包

  • 1. tsfresh
  • 2. tslearn
  • sktime
  • 总结
  • 参考资料

时间序列分析是一种经典问题,常见的场景有时序预测、时序分裂、时序聚类、异常检测等。这里介绍三个时间序列分析相关的工具包:

  • tsfresh
  • tslearn
  • sktime
    我们主要对三个时序工具包进行简要介绍, 包括这些工具包的功能定位,主要特色及其优劣等,并列出了相关的说明文档和Github地址,以供详细查阅。

1. tsfresh

tsfresh
主页地址为:https://tsfresh.com/

  • tsfresh是一个定位于时间序列特征工程相关的工具包,包括对时间序列自动提取特征特征选择特征转换等,最早于2018年由德国的几名学者提出和开发。也正因为是定位于特征工程,所以tsfresh本身是不能用于实现时序预测或者时序分类等任务的,但可以基于其特征提取的结果完成后续的操作 ,例如进行多时序聚类时首先应用tsfresh完成对不同时序数据的特征是一个很好的选择。
  • tsfresh接收的时序数据类型为pandasdataframe格式,时序数据的组织形式既可以长表也可以是宽表在其提取的特征中, 主要是关于时序数据的各项统计指标,例如最大最小值、均值、中位数、峰值个数等等,另外也可以自定义一些参数来提取更为定制化的特征,直接调用extract_features函数大概会得到几百个维度的特征提取结果,其中根据具体的时序数据取值可能会有较多的空值。
  • 从某种意义上讲,tsfresh提取的特征是关于时序数据的元特征,所以对于时序分类或聚类可能会更加有用,但用于时序预测则意义不大。

关于tsfresh的相关资料如下:

  • 论文:https://doi.org/10.1016/j.neucom.2018.03.067
  • 文档:https://tsfresh.readthedocs.io/en/latest/index.html
  • GitHub:https://github.com/blue-yonder/tsfresh(6.1k star)

2. tslearn

tslearn
tslearn是一个用于对时序数据(time series)的机器学习相关工具包,其实际定位也确实如此。该工具包是基于scikit-learn、numpy和scipy进行二次开发的工具包,所以其本质上可看做是将scikit-learn中的主要功能面向时序数据进行了定制化的转换和开发 ,例如数据预处理、分类、回归(预测是一种特殊形式的回归任务)以及聚类等功能,总体而言是功能相近、风格一脉相承的。
tslearn中主要支持的功能特性如下:
tslearn功能列表
除了提供的功能与sklearn中的风格和使用方式十分接近外,tslearn有一个比较具有优势的特性在于,tslearn可以与其他时序工具包进行整合使用,除了scikit-learn外,还有前面刚刚提到的tsfresh、后续要介绍的sktime以及pyts等,某种程度上为了更加灵活快速的使用多个工具包提供了便利。
和其他包整合
然而,总的来看,tslearn其实并没有太大的吸引力,一方面其并未提供具有时序特色的独立功能,而主要是对sklearn中相关模块面向时序数据的定制化改造和适配,更别提时序数据中一系列经典的统计学模型和近年来火热的循环神经网络等;另一方面,该工具包的更新频率是比较迟滞的,从github中可以看出其最近一次更新也在5个月前。

关于tslearn的相关参考信息如下:

  • 论文:https://jmlr.org/papers/volume21/20-091/20-091.pdf
  • 文档:https://tslearn.readthedocs.io/en/stable/quickstart.html
  • GitHub:https://github.com/tslearn-team/tslearn/(1.9k star)

sktime

sktime
sktimetslearn比较接近,也是一个scikit-learn风格的时序分析工具包,主要功能大体也可分为时序预测时序分类时序回归(与时序预测任务较为接近)、时序聚类等,其中有些功能属于已经比较成熟,而有些模块则仍在实验开发中。sktime工具包的功能特性如下:
sktime特色
虽然sktimetslearn类似,同样延续了sklearn的API风格(例如模型训练用fit、预测用predict,评分用score等等),但在功能上sktime却并没有太多sklearn中的元素,例如对于时序预测任务,sktime中主要提供的是经典的统计学模型系列(ARIMA,ETS,以及比较火热的prophet等),同时也提供了模型Ensemble能力和AutoML功能(可便于模型自动调参和优化)。与此同时,sktime也集结了一些深度学习的模型,包括Transformer等,这也为sktime提供了更强的竞争力。
关于sktime的相关参考信息如下:

  • 论文:https://arxiv.org/abs/1909.07872
  • 文档:https://www.sktime.org/en/stable/index.html
  • GitHub:https://github.com/alan-turing-institute/sktime(4.8k star)

总结

总体而言,三个时序工具包各有特色,提供的功能也互为补充:

  1. tsfresh定位于时序数据的特征工程,可方便地快速完成特征提取、特征选择与转换等操作;
  2. tslearn堪称是sklearn机器学习库的时序版,本质上可看做是将sklearn中的主要功能对时序数据进行了定制化开发和适配,使其更容易使用,同时也整合与其他主流工具包的相互转换;
  3. sktime也延续了sklearn的API风格,但在功能上则并不拘泥于sklearn中的功能元素,集成的主要是时序数据特有的模型,并加入了一些最新的功能模块,例如Meta提出的时序预测模型Prophet以及深度学习相关模型等。

参考资料

  1. https://zhuanlan.zhihu.com/p/453296592
  2. https://pypi.org/project/tslearn/
  3. https://tslearn.readthedocs.io/en/stable/index.html
  4. https://tsfresh.com/
  5. https://www.cnblogs.com/wkang/p/10380500.html
  6. https://tslearn.readthedocs.io/en/stable/quickstart.html
  7. https://www.sktime.org/en/stable/developers.html
  8. https://github.com/alan-turing-institute/sktime
这篇关于【Python】包推荐:时间序列分析工具包的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!