使用 Python Itertools 进行时间序列特征工程

Learn how to use Python itertools to build efficient and scalable time series features.

来源:KDnuggets

简介

时间序列特征工程不遵循与表格数据相同的规则。观察不是独立的,行顺序不是偶然的,最有用的功能很少是单独的读数。您必须识别随时间变化的模式,例如变化率、滞后比较、与滚动基线的偏差等等。

构建滞后、滑动窗口和跨分辨率分组的核心都是有序序列上的迭代问题。Python 的 itertools 模块非常适合此类工作。它不会取代 .rolling() 等高级 pandas 抽象,但它为您提供了较低级别的构建块来准确构建您需要的功能,并完全控制逻辑。

在本文中,您将使用 itertools 构建七类时间序列特征。您还将将每个应用到示例数据集。

您可以在 GitHub 上获取代码。

创建示例数据集

在开始构建功能之前,让我们启动一个示例传感器数据集以在整篇文章中使用。

输出:

温度_c 湿度_pct 功率_kw

时间戳

2024-03-01 00:00:00 3.649 77.39 40.27

2024-03-01 01:00:00 3.772 76.52 41.33

2024-03-01 02:00:00 4.300 75.25 42.87

2024-03-01 03:00:00 4.814 74.26 40.82

2024-03-01 04:00:00 4.481 75.85 40.27

2024-03-01 05:00:00 4.604 76.09 42.51

2024-03-01 06:00:00 5.192 74.78 42.512024-03-01 07:00:00 4.910 76.03 40.94形状:(168, 3)我们现在拥有三个传感器通道的 168 小时读数。现在让我们构建功能。1. 使用 islice 生成滞后特征让我们使用 islice 为示例数据集构建滞后特征:2. 使用 islice 和accumulate 构建滚动窗口功能3. 创建季节性的产品交互特征现在让我们构建与产品的交互功能:4. 使用 tee 提取滑动窗口统计信息摘要