【Python】包推荐:时间序列分析工具包
作者:互联网
3个Python时间序列分析工具包
时间序列分析是一种经典问题,常见的场景有时序预测、时序分裂、时序聚类、异常检测等。这里介绍三个时间序列分析相关的工具包:
- tsfresh
- tslearn
- sktime
我们主要对三个时序工具包进行简要介绍, 包括这些工具包的功能定位,主要特色及其优劣等,并列出了相关的说明文档和Github地址,以供详细查阅。
1. tsfresh
主页地址为:https://tsfresh.com/
tsfresh
是一个定位于时间序列特征工程相关的工具包,包括对时间序列自动提取特征
、特征选择
、特征转换
等,最早于2018年由德国的几名学者提出和开发。也正因为是定位于特征工程
,所以tsfresh本身是不能用于实现时序预测或者时序分类等任务的,但可以基于其特征提取的结果完成后续的操作 ,例如进行多时序聚类
时首先应用tsfresh
完成对不同时序数据的特征是一个很好的选择。tsfresh
接收的时序数据类型为pandas
的dataframe
格式,时序数据的组织形式既可以长表
也可以是宽表
。在其提取的特征中, 主要是关于时序数据的各项统计指标,例如最大最小值、均值、中位数、峰值个数等等,另外也可以自定义一些参数来提取更为定制化的特征,直接调用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
是一个用于对时序数据(time series)的机器学习相关工具包,其实际定位也确实如此。该工具包是基于scikit-learn、numpy和scipy进行二次开发的工具包,所以其本质上可看做是将scikit-learn
中的主要功能面向时序数据进行了定制化的转换和开发 ,例如数据预处理、分类、回归(预测是一种特殊形式的回归任务)以及聚类等功能,总体而言是功能相近、风格一脉相承的。
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
与tslearn
比较接近,也是一个scikit-learn
风格的时序分析工具包,主要功能大体也可分为时序预测
、时序分类
、时序回归
(与时序预测任务较为接近)、时序聚类
等,其中有些功能属于已经比较成熟,而有些模块则仍在实验开发中。sktime
工具包的功能特性如下:
虽然sktime
与tslearn
类似,同样延续了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)
总结
总体而言,三个时序工具包各有特色,提供的功能也互为补充:
- tsfresh定位于时序数据的特征工程,可方便地快速完成特征提取、特征选择与转换等操作;
- tslearn堪称是sklearn机器学习库的时序版,本质上可看做是将sklearn中的主要功能对时序数据进行了定制化开发和适配,使其更容易使用,同时也整合与其他主流工具包的相互转换;
- sktime也延续了sklearn的API风格,但在功能上则并不拘泥于sklearn中的功能元素,集成的主要是时序数据特有的模型,并加入了一些最新的功能模块,例如Meta提出的时序预测模型Prophet以及深度学习相关模型等。
参考资料
- https://zhuanlan.zhihu.com/p/453296592
- https://pypi.org/project/tslearn/
- https://tslearn.readthedocs.io/en/stable/index.html
- https://tsfresh.com/
- https://www.cnblogs.com/wkang/p/10380500.html
- https://tslearn.readthedocs.io/en/stable/quickstart.html
- https://www.sktime.org/en/stable/developers.html
- https://github.com/alan-turing-institute/sktime
标签:sktime,Python,工具包,时序,tslearn,https,序列,tsfresh 来源: https://blog.csdn.net/ARPOSPF/article/details/122438714