稚久|特征工程之处理时间序列数据


稚久|特征工程之处理时间序列数据维基百科对于特征工程的定义是:利用相关领域知识 , 通过数据挖掘技术从原始数据中提取特征的过程 。 这些特征可以用来提高机器学习算法的性能 。
不过 , 特征工程不一定非得很花哨 。 特征工程的一个简单但普遍的处理对象是时间序列数据 。 特征工程在这个领域的重要性是因为(原始)时间序列数据通常只包含一个表示时间属性的列 , 即日期时间(或时间戳) 。
对于日期时间数据 , 特征工程可以看作是从独立的(不同的)特征数据中提取有用的信息 。 例如 , 从"2020–07–01 10:21:05"这日期时间数据中 , 我们可能需要从中提取以下特征:
1. 月份:7
1. 本月第几日:1
1. 周几:周三(通过2020-07-01判断得到)
1. 时刻:10:21:05
从日期时间数据中提取这类特征正是本文的目标 。 之后 , 我们将结合我们的工程实际中的特征数据 , 将其作为预测因子 , 并且建立一个gradient boosting 回归预测模型 。 具体来说 , 我们将预测地铁州际交通量 。
本文目录本文主要包含以下内容:
详细阐述如何从时间日期数据中提取以下特征数据:
1. 月份
1. 时间数据处于每月第几日
1. 周几
1. 时间
1. 时段分类(早上、下午等)
1. 周末标记(如果是周末则添加标记1 , 否则添加标记0)
如何将上述特种数据用于搭建Gradient Boosting 回归模型 , 并且实现对于地铁州际交通量的预测
数据情况在本文中 , 我们使用地铁州际交通量数据集 , 它可以在UCI机器学习库(archive.ics.uci.edu/ml/datasets/Metro+Interstate+Traffic+Volume)中找到 。 该数据集是明尼苏达州圣保罗州明尼阿波利斯市I-94的每小时交通量 , 其中包括2012-2018年的天气和假日数据 。 这48204行数据包含以下属性:
1. holiday:类型数据 , 包含美国国家法定假日、区域假日、明尼苏达州博览会等
1. temp:数值型数据 , 平均温度(开尔文)
1. rain_1h:数值型数据 , 每小时降雨(毫米)
1. snow_1h:数值型数据 , 每小时降雪(毫米)
1. clouds_all:数值型数据 , 云层情况(百分比)
1. weather_main:类型数据 , 当前天气的分类描述(简要)
1. weather_description:类型数据 , 当前天气的分类描述(详细)
1. data_time:时间序列数据
1. traffic_volume:数值型数据 , 每小时I-94 ATR 301记录的西行交通量(本文预测目标)
接下来 , 我们首先载入数据:
# import librariesimport pandas as pdimport numpy as npimport matplotlib.pyplot as plt# load the dataraw = pd.read_csv('Metro_Interstate_Traffic_Volume.csv')# display first five rowsraw.head()# display details for each columnraw.info()
稚久|特征工程之处理时间序列数据raw.head()
稚久|特征工程之处理时间序列数据raw.info()查看info信息 , 我们发现data_time这一类目是object类型 , 所以我们需要将其转化为datetime类型:
# convert date_time column to datetime typeraw.date_time = pd.to_datetime(raw.date_time)特征工程从上面的info方法的输出中 , 我们知道除了date_time列之外还有其他的分类特征 。 但是由于本文的主要主题是处理时间序列数据 , 我们将重点关注针对date_time的特性工程 。