Sktime:用于时间序列机器学习的Python库


全文共4701字 , 预计学习时长12分钟
Sktime:用于时间序列机器学习的Python库
本文插图
图源:unsplash
在Python中使用时间序列来解决数据科学问题是非常有挑战性的 , 现有的工具并不适合时间序列任务 , 也不容易集成 。
Scikiti -learn包中的方法假设数据是表格格式结构 , 每一列为独立同分布——这些假设不适用于时间序列数据 。 包含时间序列学习模块的程序包 , 例如状态模型 , 不能很好地集成 。 此外 , 现有的Python包不支持许多基本的时间序列操作 , 比如将数据分成不同时间的训练集和测试集 。
Sktime就是为了解决这一问题应运而生的 。 Sktime是一个使用时间序列进行机器学习的开源Python工具箱 。 这是一个由英国经济与社会研究理事会、消费者数据研究中心和艾伦·图灵研究所资助的社区驱动的基金项目 。
Sktime将Scikit-learn应用程序接口扩展到时间序列任务 。 它提供了必要的算法和转换工具 , 能有效地解决时间序列回归、预测和分类任务 。 该库包括其他通用类库没有的、专用的时间序列学习算法和转换方法 。
Sktime的设计可以与Scikiti -learn互操作 , 轻松适应相关时间序列任务的算法 , 并构建复合模型 。 具体怎么操作呢?许多时间序列任务是相关联的 , 能够解决一项任务的算法通常可以用来解决相关的任务 , 这个概念叫做还原 。
例如 , 时间序列回归模型(使用序列来预测输出值)可用于时间序列预测任务(预测的输出值是终值) 。
Sktime:用于时间序列机器学习的Python库
本文插图
sktime库标志 | 图源:Github
其宗旨是:“Sktime使可理解和可组合的机器学习具有时间序列 , 为支持清晰学习任务分类Scikiti -learn兼容算法和模型组合工具提供了具有启发性的文档和友好的社群 。 ”
本文将重点介绍sktime的一些特性 。
Sktime:用于时间序列机器学习的Python库
本文插图
适合时间序列的数据模型
Sktime针对Pandas数据帧中的时间序列使用了嵌套数据结构 。
典型数据框架中的每一行都包含独立同分布观测值 , 列代表不同的变量 。 对于Sktime方法 , Pandas数据帧中的每个单元格包含整个时间序列 。 这种格式对于多变量、面板和异构数据很灵活 , 允许重用Pandas和Scikit-learn中的方法 。 在下表中 , 每一行都是一个观察值 , X列中包含一个时间序列数组 , y列包含一个组值 。
Sktime:用于时间序列机器学习的Python库
本文插图
本机时间序列数据结构 , 与sktime兼容
在下表中 , 按照Scikit-learn的方法要求 , X列中的每个元素被分为单个列 , 251列的维数非常高 。 此外 , 表格学习算法忽略了列的时间顺序(但用于时间序列分类和回归算法) 。
Sktime:用于时间序列机器学习的Python库
本文插图
scikit-learn所需时间序列数据结构
对于建模多个同时出现的系列的问题 , 本机系列数据结构兼容的Sktime显然是最好的 , Scikiti -learn表格格式数据结构训练的模型会淹没在众多特性中 。
sktime能做什么?
根据Github页面介绍 , sktime目前提供:
· 模型调优 。
· 转换器和模型流水线技术 。
· 最先进的时间序列分类、回归和预测算法(来自基于java的tsml工具包) 。
· 用于时间序列的转换器:单序列变换(例如去趋势或去周期) , 序列作为特征变换(例如特征提取器) , 以及组成不同转换器的工具 。
· 模型集合——例如用于时间序列分类和回归的可完全定制的随机森林;多变量问题的集合 。


推荐阅读