如何使用5个时间步长创建移动平均特征
如何使用5个时间步长创建移动平均特征
移动平均特征通过平滑时间序列数据来减少噪声,突出长期趋势。以下是使用Python创建5个时间步长移动平均特征的完整方法:
方法一:使用Pandas(推荐)
import pandas as pd# 假设df是包含时间序列数据的DataFrame,'value'是目标列
df['ma_5'] = df['value'].rolling(window=5).mean()# 示例输出:
# 时间点 value ma_5
# t1 10 NaN
# t2 12 NaN
# t3 11 NaN
# t4 13 NaN
# t5 14 (10+12+11+13+14)/5 = 12.0
# t6 16 (12+11+13+14+16)/5 = 13.2
方法二:使用NumPy手动实现
import numpy as npdef moving_average(data, window=5):return np.convolve(data, np.ones(window)/window, mode='valid')# 示例使用
data = [10, 12, 11, 13, 14, 16, 15, 17, 18]
ma_5 = moving_average(data, window=5) # 结果: [12.0, 13.2, 13.8, 15.0, 16.2]
关键说明:
- 窗口处理:
- 前4个时间点(窗口不满5)会生成
NaN
- 从第5个点开始输出有效平均值
- 前4个时间点(窗口不满5)会生成
- 边界调整:
- 添加
min_periods=1
参数可计算部分窗口均值
df['ma_5'] = df['value'].rolling(5, min_periods=1).mean()
- 添加
- 数据要求:
- 时间序列必须按时间顺序排序
- 处理缺失值:
df['value'].fillna(method='ffill').rolling(5).mean()
应用场景
移动平均特征常用于:
- 时间序列预测(如ARIMA模型)
- 异常检测(平滑后更容易识别离群点)
- 金融分析(股价趋势分析)
- 传感器数据处理(消除瞬时波动)
指数平滑法是对移动平均的改进,它赋予近期数据更高权重,使久远数据呈指数衰减。