Kaggle知識點:5種時序特征處理方法

在Kaggle競賽匯總日期是帶有信息非常多的字段,與(yu) 普通的字段不同,時序字段可以將曆史的信息保留,同時帶有季節性和周期性的信息。

1 與日期相關的特征

在處理時序特征時,可以根據曆史數據提取出工作日和周末信息,擁有關(guan) 於(yu) 日、月、年等的信息對於(yu) 預測值非常有用。

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()

Kaggle知識點:5種時序特征處理方法

2 與時間相關的特征

如果我們(men) 有時間戳,我們(men) 可以類似地提取更細粒度的特征。例如,我們(men) 可以確定記錄數據的當天的小時或分鍾,並比較營業(ye) 時間和非營業(ye) 時間之間的趨勢。

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()

Kaggle知識點:5種時序特征處理方法

我們(men) 可以從(cong) 日期列中提取一些特征。以下是我們(men) 可以生成的完整功能列表:

Kaggle知識點:5種時序特征處理方法

3 滯後特征 Lag Features

如果我們(men) 正在預測一家公司的股票價(jia) 格。前一天的股價(jia) 對於(yu) 做出預測很重要,時間的值受時間的值的影響很大。過去的值稱為(wei) 滯後數據。

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()

Kaggle知識點:5種時序特征處理方法

選擇的滯後值將取決(jue) 於(yu) 單個(ge) 值與(yu) 其過去值的相關(guan) 性,我們(men) 也可以創建多個(ge) 滯後功能,假設我們(men) 想要滯後特征1到滯後特征7。

我們(men) 可以讓模型決(jue) 定哪個(ge) 是最有價(jia) 值的。因此,如果我們(men) 訓練線性回歸模型,它將為(wei) 滯後特征分配適當的權重(或係數):

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)

Kaggle知識點:5種時序特征處理方法

確定相關(guan) 性顯著的滯後的方法不止一種。例如,我們(men) 可以使用 ACF(自相關(guan) 函數)和 PACF(部分自相關(guan) 函數)圖。

4 滑動/滾動窗口特征

如何根據過去的值計算一些統計值?這種方法稱為(wei) 滾動窗口方法,因為(wei) 每個(ge) 數據點的窗口都不同。

Kaggle知識點:5種時序特征處理方法

由於(yu) 這看起來像一個(ge) 隨著每個(ge) 下一個(ge) 點滑動的窗口,因此使用此方法生成的特征稱為(wei) “滾動窗口”特征。我們(men) 將選擇一個(ge) 窗口大小,取窗口中值的平均值,並將其用作特征。讓我們(men) 在 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)

Kaggle知識點:5種時序特征處理方法

5 擴展窗口特征

在滾動窗口的情況下,窗口的大小是恒定的,擴展窗口功能背後的想法是它考慮了所有過去的值。每一步,窗口的大小都會(hui) 增加 1,因為(wei) 它考慮了係列中的每個(ge) 新值。

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)

Kaggle知識點:5種時序特征處理方法

【競賽報名/項目谘詢+微信:mollywei007】

上一篇

數學建模是什麽?HiMCM比賽規則和獎項介紹

下一篇

英本學生如何在英國續簽學生簽證?

你也可能喜歡

  • 暫無相關文章!

評論已經被關(guan) 閉。

插入圖片
返回頂部