稚久|特征工程之处理时间序列数据( 三 )
我们需要考虑的最后一个分类特征是天气 。 我们只对该特征进行如下独热编码 。
# one-hot encode weatherweathers = pd.get_dummies(raw.weather_main)#display dataweathers
独热编码后的Weather信息
特征处理后的数据现在 , 我们终于有了最终的可用于训练的数据!让我们创建一个名为features的全新数据集 , 它包含所有的特征 , 包括数值型特征(我们从原始数据中按原样放置)和类型特征(我们设计的特性) 。
# features table#first step: include features with single column naturefeatures = pd.DataFrame({'temp' : raw.temp,'rain_1h' : raw.rain_1h,'snow_1h' : raw.snow_1h,'clouds_all' : raw.clouds_all,'month' : months,'day_of_month' : day_of_months,'hour' : hours,'is_holiday' : is_holiday,'is_weekend' : is_weekend})#second step: concat with one-hot encode typed featuresfeatures = pd.concat([features, days, dayparts, weathers], axis = 1)# target columntarget = raw.traffic_volume
在我们将数据输入模型之前 , 我们需要分割数据(训练集和测试集) 。 请注意 , 下面我们不随机化我们的数据 , 这是由于我们的数据具有时间序列特征 。
#split data into training and test dataX_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.1, shuffle = False)
建立回归预测模型现在我们准备建立我们的模型来预测地铁州际交通量 。 在这项工作中 , 我们将使用Gradient Boosting回归模型 。
该模型的理论和具体细节超出了本文的讨论范围 。 但是简单来说 , gradient-boosting模型属于集成模型 , 它使用梯度下降算法来降低弱学习模型(决策树)中的预测损失 。
训练模型让我们在训练数据上实例化模型并训练模型!
【稚久|特征工程之处理时间序列数据】from sklearn import datasets, ensemble# define the model parametersparams = {'n_estimators': 500,'max_depth': 4,'min_samples_split': 5,'learning_rate': 0.01,'loss': 'ls'}# instantiate and train the modelgb_reg = ensemble.GradientBoostingRegressor(**params)gb_reg.fit(X_train, y_train)
评价模型我们选择两个指标来评价模型:MAPE 和 R2得分 。 在测试集上使用训练完成的模型进行预测 , 然后计算这两个指标 。
# define MAPE functiondef mape(true, predicted):inside_sum = np.abs(predicted - true) / truereturn round(100 * np.sum(inside_sum ) / inside_sum.size,2)# import r2 scorefrom sklearn.metrics import r2_score# evaluate the metricsy_true = y_testy_pred = gb_reg.predict(X_test)#print(f"GB model MSE is {round(mean_squared_error(y_true, y_pred),2)}")print(f"GB model MAPE is {mape(y_true, y_pred)} %")print(f"GB model R2 is {round(r2_score(y_true, y_pred)* 100 , 2)} %")
测试集上的评价指标结果
我们可以看出我们的模型性能相当不错 。 我们的MAPE低于15% , 而R2得分略高于95% 。
结果可视化为了直观理解模型性能 , 结果可视化很有必要 。
由于我们的测试数据(4820个数据点)的长度 , 我们只绘制了最后100个数据点上的实际值和模型预测值 。 此外 , 我们还包括另一个模型(在下面的绘图代码中称为gb_reg_lite) , 它不包含日期时间特征作为其预测因子(它只包含非日期时间列作为特征 , 包括temp、weather等) 。
- 特斯拉上海二期工程主体结构完成 2020电动汽车行业现状及发展前景趋势分析研究报告
- 物流巴巴网|马来西亚萨潘加尔湾集装箱港口的扩建工程将于今年开始
- |抗疫英雄谱丨中国工程院院士张伯礼:贤以弘德,术以辅仁
- 央视新闻客户端|抗疫英雄谱丨中国工程院院士张伯礼:贤以弘德 术以辅仁
- 中国中铁|中国中铁中标400亿大工程!铁建有份
- 跌幅为|9月7日三大股指午盘全线收跌:上证指数跌0.16%,创业板指跌1.15%;安防设备、旅游酒店、园林工程逆势领涨
- 上观新闻|特斯拉上海二期工程主体结构完成,可量产Model Y
- 上海消防网|黄浦区召开在建修缮工程安全生产和消防工作会议
- 宝山区委组织部|宝山区淞南镇:积极打造入党积极分子“育苗工程”
- 一辈子都不需要成熟起来|有关美国乡村发展政策变化的特征