Kaggle知识点:5种时序特征处理方法

共 2798字,需浏览 6分钟

 ·

2021-10-26 16:04

在Kaggle竞赛汇总日期是带有信息非常多的字段,与普通的字段不同,时序字段可以将历史的信息保留,同时带有季节性和周期性的信息。

1 与日期相关的特征

在处理时序特征时,可以根据历史数据提取出工作日和周末信息,拥有关于日、月、年等的信息对于预测值非常有用。

import pandas as pd
data = pd.read_csv('Train_SU63ISt.csv')
data['Datetime'] = pd.to_datetime(data['Datetime'],format='%d-%m-%Y %H:%M')

data['year']=data['Datetime'].dt.year 
data['month']=data['Datetime'].dt.month 
data['day']=data['Datetime'].dt.day

data['dayofweek_num']=data['Datetime'].dt.dayofweek  
data['dayofweek_name']=data['Datetime'].dt.weekday_name

data.head()

2 与时间相关的特征

如果我们有时间戳,我们可以类似地提取更细粒度的特征。例如,我们可以确定记录数据的当天的小时或分钟,并比较营业时间和非营业时间之间的趋势。

import pandas as pd
data = pd.read_csv('Train_SU63ISt.csv')
data['Datetime'] = pd.to_datetime(data['Datetime'],format='%d-%m-%Y %H:%M')

data['Hour'] = data['Datetime'].dt.hour 
data['minute'] = data['Datetime'].dt.minute 

data.head()

我们可以从日期列中提取一些特征。以下是我们可以生成的完整功能列表:

3 滞后特征 Lag Features

如果我们正在预测一家公司的股票价格。前一天的股价对于做出预测很重要,时间的值受时间的值的影响很大。过去的值称为滞后数据。

import pandas as pd
data = pd.read_csv('Train_SU63ISt.csv')
data['Datetime'] = pd.to_datetime(data['Datetime'],format='%d-%m-%Y %H:%M')

data['lag_1'] = data['Count'].shift(1)
data = data[['Datetime''lag_1''Count']]
data.head()

选择的滞后值将取决于单个值与其过去值的相关性,我们也可以创建多个滞后功能,假设我们想要滞后特征1到滞后特征7。

我们可以让模型决定哪个是最有价值的。因此,如果我们训练线性回归模型,它将为滞后特征分配适当的权重(或系数):

import pandas as pd
data = pd.read_csv('Train_SU63ISt.csv')
data['Datetime'] = pd.to_datetime(data['Datetime'],format='%d-%m-%Y %H:%M')

data['lag_1'] = data['Count'].shift(1)
data['lag_2'] = data['Count'].shift(2)
data['lag_3'] = data['Count'].shift(3)
data['lag_4'] = data['Count'].shift(4)
data['lag_5'] = data['Count'].shift(5)
data['lag_6'] = data['Count'].shift(6)
data['lag_7'] = data['Count'].shift(7)

data = data[['Datetime''lag_1''lag_2''lag_3''lag_4''lag_5''lag_6''lag_7''Count']]
data.head(10)

确定相关性显着的滞后的方法不止一种。例如,我们可以使用 ACF(自相关函数)和 PACF(部分自相关函数)图。

4 滑动/滚动窗口特征

如何根据过去的值计算一些统计值?这种方法称为滚动窗口方法,因为每个数据点的窗口都不同。

由于这看起来像一个随着每个下一个点滑动的窗口,因此使用此方法生成的特征称为“滚动窗口”特征。我们将选择一个窗口大小,取窗口中值的平均值,并将其用作特征。让我们在 Python 中实现它:

import pandas as pd
data = pd.read_csv('Train_SU63ISt.csv')
data['Datetime'] = pd.to_datetime(data['Datetime'],format='%d-%m-%Y %H:%M')

data['rolling_mean'] = data['Count'].rolling(window=7).mean()
data = data[['Datetime''rolling_mean''Count']]
data.head(10)

5 扩展窗口特征

在滚动窗口的情况下,窗口的大小是恒定的,扩展窗口功能背后的想法是它考虑了所有过去的值。每一步,窗口的大小都会增加 1,因为它考虑了系列中的每个新值。

import pandas as pd
data = pd.read_csv('Train_SU63ISt.csv')
data['Datetime'] = pd.to_datetime(data['Datetime'],format='%d-%m-%Y %H:%M')

data['expanding_mean'] = data['Count'].expanding(2).mean()
data = data[['Datetime','Count''expanding_mean']]
data.head(10)



相关阅读:


浏览 71
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报