时序数据和表格数据完全是两码事。观测值彼此不独立,行顺序至关重要,最有用的特征往往不是单个读数,而是跨时间的模式——变化率、滞后对比、与滚动基线的偏离。这些本质上都是有序序列的迭代问题,而Python的itertools模块正是为此而生。
本文用168小时传感器数据演示七类时序特征的构建方法。数据集包含温度(日周期+漂移+噪声)、湿度(与温度负相关)、功耗(工作日白天峰值)三个通道,完整代码已托管至GitHub。
![]()
滞后特征是最基础的时序特征,即固定步数前的变量值。用itertools.islice配合tee可高效实现:先创建两个独立迭代器,一个保持原序列,另一个跳过前N个元素,再用zip配对。相比pandas的.shift(),这种方式内存占用更低,且能精确控制边界处理逻辑。
滑动窗口特征需要计算局部统计量。itertools的pairwise(Python 3.10+)或自定义窗口迭代器,可以逐次推进窗口并计算均值、标准差、极值差。关键优势在于窗口大小和步长完全可控,不受pandas预定义方法的限制。
多分辨率聚合是另一核心场景。用groupby配合时间戳分组,可在小时/日/周多级粒度上提取特征。例如按工作日/周末分组计算功耗基线,再计算每小时相对于该基线的偏离程度——这种跨尺度对比正是时序建模的关键信号。
序列组合特征常被忽视。product和combinations可用于构建多变量交互:温度与湿度的联合分布分位数、功耗与温度的滞后相关性等。这些高阶特征对捕捉设备异常状态尤为有效。
边界与缺失处理是工程落地的难点。itertools的惰性求值特性允许自定义填充策略:前向填充、后向填充、或基于周期模式的插值。相比pandas的隐式处理,显式控制每一步迭代逻辑更易调试和复现。
性能方面,纯Python迭代在超大规模数据上并非最优,但itertools作为生成器组合工具,内存效率显著优于物化中间结果。对于百万级以下样本,开发效率与运行效率的平衡值得优先考虑。最终特征质量取决于对业务场景的理解,而非工具本身。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.