Datewhale AI夏令营(机器学习 task3)

特征优化

1. 历史平移特征(Lag Features)

历史平移特征,也称为滞后特征,是通过将时间序列数据向前或向后移动一定的时间单位(如天、月、年等)来创建的。这些特征允许模型访问过去某个时间点的数据,从而捕捉时间序列数据中的时间依赖性和周期性。例如,在预测明天的股票价格时,可能会使用昨天、前天或上周的价格作为特征。

import pandas as pd  
import numpy as np  
  
# 示例数据  
data = {'date': pd.date_range(start='2023-01-01', periods=10, freq='D'),  
        'value': np.random.randn(10)}  
df = pd.DataFrame(data)  
  
# 创建历史平移特征  
# 例如,创建前一天(lag 1)和前两天(lag 2)的value作为特征  
df['lag_1'] = df['value'].shift(1)  
df['lag_2'] = df['value'].shift(2)  
  
# 注意:shift会导致NaN出现在最前面,你可能需要填充这些NaN值,或者根据你的需求进行其他处理  
df.dropna(inplace=True)  # 删除包含NaN的行  
  
print(df)

2. 差分特征(Difference Features)

差分特征是通过计算时间序列中相邻数据点之间的差异来获得的。一阶差分是最常见的,它反映了数据随时间的变化率或增长/减少情况。此外,还可以计算二阶差分(即差分的一阶差分),以揭示数据变化的加速度。差分特征有助于消除时间序列中的趋势和季节性成分,使数据更加平稳,适合进行进一步的分析和建模。

# 假设df是上面创建的DataFrame  
  
# 计算一阶差分  
df['diff_1'] = df['value'].diff()  
  
# 如果你想要计算二阶差分(即差分的一阶差分),可以这样做:  
df['diff_2'] = df['diff_1'].diff()  
  
# 注意:diff同样会导致NaN出现在最前面  
df.dropna(inplace=True)  # 如果你不想在数据中包含NaN  
  
print(df)

3. 窗口统计特征(Window-based Statistical Features)

窗口统计特征是通过在时间序列上滑动一个固定大小的窗口,并在每个窗口内计算统计量(如均值、最大值、最小值、中位数、方差等)来获得的。这些特征提供了关于数据在特定时间段内行为的信息,有助于捕捉短期和长期的变化趋势。

# 假设df是上面创建的DataFrame(但在应用窗口统计之前,通常不需要删除NaN)  
  
# 计算过去3个时间点的滚动平均值  
df['rolling_mean_3'] = df['value'].rolling(window=3).mean()  
  
# 计算过去3个时间点的滚动最大值  
df['rolling_max_3'] = df['value'].rolling(window=3).max()  
  
# 注意:rolling窗口的默认行为是保留NaN,直到窗口大小被填满  
print(df)  
  
# 如果你想要从窗口开始时就填充NaN(比如用窗口内的第一个有效值),可以使用min_periods参数  
df['rolling_mean_3_minp'] = df['value'].rolling(window=3, min_periods=1).mean()  
print(df)

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值