基于时间序列数据的特征提取方法

DeadBear +0/-0 0 0 正常 2025-12-24T07:01:19 数据清洗 · 特征提取 · 时间序列

基于时间序列数据的特征提取方法

在大模型训练中,时间序列数据的特征提取是关键环节。本文将介绍几种实用的时间序列特征工程方法。

1. 统计特征提取

import pandas as pd
import numpy as np

def extract_statistical_features(df, column):
    features = {
        'mean': df[column].mean(),
        'std': df[column].std(),
        'min': df[column].min(),
        'max': df[column].max(),
        'median': df[column].median(),
        'q25': df[column].quantile(0.25),
        'q75': df[column].quantile(0.75)
    }
    return features

2. 时间相关特征

# 提取时间周期特征
def extract_temporal_features(df, date_column):
    df[date_column] = pd.to_datetime(df[date_column])
    features = {
        'year': df[date_column].dt.year,
        'month': df[date_column].dt.month,
        'day': df[date_column].dt.day,
        'weekday': df[date_column].dt.weekday,
        'hour': df[date_column].dt.hour
    }
    return features

3. 滞后特征与滑动窗口统计

# 计算滞后特征
def create_lag_features(df, column, lags=[1,2,3]):
    for lag in lags:
        df[f'{column}_lag_{lag}'] = df[column].shift(lag)
    return df

# 滑动窗口统计
def create_rolling_features(df, column, windows=[3,7,14]):
    for window in windows:
        df[f'{column}_rolling_mean_{window}'] = df[column].rolling(window=window).mean()
        df[f'{column}_rolling_std_{window}'] = df[column].rolling(window=window).std()
    return df

这些方法可有效提升时间序列模型的性能,建议在数据清洗后优先尝试。

推广
广告位招租

讨论

0/2000
Donna850
Donna850 · 2026-01-08T10:24:58
统计特征提取是时间序列建模的基础,但别忽视异常值对均值、标准差的影响,建议加个robust scaler或者直接用中位数替代。
HighBob
HighBob · 2026-01-08T10:24:58
滞后特征和滑动窗口要结合业务场景,比如金融数据用滚动均值效果好,但对突发事件可能反应慢,可考虑加个指数加权。
Heidi345
Heidi345 · 2026-01-08T10:24:58
时间周期特征别只提取年月日,小时级别太细容易过拟合,建议先做聚合,比如按周或按季度提取,再看是否需要细分。
Yvonne162
Yvonne162 · 2026-01-08T10:24:58
实际工程中,这些特征组合最好用Pipeline封装,比如sklearn的ColumnTransformer,方便部署和复用,避免特征泄露问题。