【注】本人原创,最初发表于CSDN,后发布于知乎。为避免误会为抄袭,特此说明
由于我热衷于机器学习在时间序列中的应用,特别是在医学检测和分类中,在尝试的过程中,一直在寻找优质的Python库(而不是从头开始编写代码)去实现我对于数据处理的需求。以下是我在处理时间序列数据(time series data)。我希望其中一些对你也有用!
seglearn
这个库可以帮助你创建时间序列数据,特别是在使用延迟(lag)或者滑窗(sliding window)进行回归、分类这些监督学习的算法的时候。另一个值得注意的点是你可以快速计算一系列的数据特征,例如峰度,绝对能量,均值,中位数,波形长度,斜率变化等等。有了这个库,你可以随意的将这些特征放入输入或者输出中去。在回归算法中,你可能不希望直接使用数据点进行运算,那么你可以直接调用函数计算中值之后再输入到模型中去。有了它,你可以很轻松的进行数据的预处理和特征转换。
tslearn
这个库似乎用的比较多,之后我也会更一期来专门讲解这个库的运用。这个库可以使用的方法有聚类,SVM,k-均值等等。如果你使用的是非监督学习的话,这会极大的减轻你的计算压力。
pyts
这个库的精华在于他有很多的概念和方法可以使用。例如再离散化方法中,可以实现SAX,PAA和WEASEL等。这个库也提供了Gramian Angular Field,Recurrent Plots这样的可视化工具。还有多种用于预处理或转换数据集的实用接口,例如离散傅立叶变换,合并等。基于此,使用它内置的频谱分析功能对时间序列进行分解和去噪也是一个不错的选择。使用它提供的数据集快速上手或许是个不错的选择。
NoLiTSA
NoLiTSA这个库已经很久没有更新了,但是对于非线性数据的处理,这绝对值得一试。针对于数学和物理学中的非线性时间序列问题(很多实际问题也是非线性的),它使用动态方法去处理延迟、窗口函数。在进行动态系统重建,估计相关维度还有计算时间序列的最大李雅普诺夫指数上,NoLiTSA都提供了很大的便利。
nolds
这是这几个中较小的一个库,当然小也有小的好处。对于具体数据,它可以很好地实验样本熵、Lyapunov指数的计算(不单单是最大指数)。此外,他也可以提供了计算Hurst指数和Detrended fluctuation analysis的工具。
fireTS
它允许用户根据输入选择不同的延迟和回归函数。我还没有深入体验,据说随机森林、XGB之类都是可以的。
最后,我在推荐GitHub的一个项目叫做awesome time series in python。相信我,你值得拥有!
最后,推荐几本书好了。现在编程类的书是真的贵,有需要电子版的小伙伴可以私聊我。我发你几本我自己在看的。