详细内容或原文请订阅后点击阅览
在 Python 中使用 sktime 构建时间序列机器学习模型
在本文中,我们将使用 sktime 在 Python 中构建时间序列机器学习模型,并探索其用于预测工作流程的核心数据结构。
来源:KDnuggets简介
如果您使用传感器读数、服务器指标或随时间推移到达的任何数据,您已经知道标准 scikit-learn 管道不太适合。时间序列数据具有表格模型忽略的结构:季节性、趋势、时间顺序以及未来值取决于过去值的事实。
sktime 是专门为此构建的 Python 库。它为您提供了 scikit-learn 风格的 API - 拟合、预测、转换 - 但从头开始设计用于时间序列。您可以使用一致的界面对时间序列进行预测、分类、回归和聚类。
在本文中,您将解决一个示例问题:预测工业 HVAC 传感器的温度读数。您将了解 sktime 如何处理时间序列数据、如何构建预处理管道、如何适应预测器以及如何评估它们。
您可以在 GitHub 上获取代码。
先决条件
您需要 Python 3.10 或更高版本,并且对 pandas 有基本的了解。安装您需要的一切:
pip install sktime pmdarima statsmodels
如果您希望一次性拥有所有可选依赖项,pip install sktime[all_extras] 可以覆盖它们。
sktime 有何用处
它有助于理解 sktime 正在解决的问题。在 scikit-learn 中,您的数据是一个 2D 表——行是样本,列是特征。时间序列数据打破了这一假设,因为每个“行”实际上是一段时间内的值序列,并且这些值的顺序很重要。
您将使用的主要数据容器是:
对于时间索引本身,sktime 支持多种时间索引:pandas 对象上的 DatetimeIndex、PeriodIndex、Int64Index 和 RangeIndex。该索引必须是单调的。如果您使用 DatetimeIndex,则应设置 freq 属性。
设置数据集
让我们创建一个真实的数据集。想象一下工厂中的 HVAC 传感器每小时记录温度。读数具有每日季节性模式(工作时间较高),由于夏季而略有上升趋势,并且存在一些噪音。
输出:
