在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()
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()
我們(men) 可以從(cong) 日期列中提取一些特征。以下是我們(men) 可以生成的完整功能列表:
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()
選擇的滯後值將取決(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)
確定相關(guan) 性顯著的滯後的方法不止一種。例如,我們(men) 可以使用 ACF(自相關(guan) 函數)和 PACF(部分自相關(guan) 函數)圖。
4 滑動/滾動窗口特征
如何根據過去的值計算一些統計值?這種方法稱為(wei) 滾動窗口方法,因為(wei) 每個(ge) 數據點的窗口都不同。
由於(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)
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)
評論已經被關(guan) 閉。