前一段时间参加了京东的算法大赛陪跑了一下,试了各种算法,包括lightbgm,xgboost,lstm以及简单的时间序列模型,发现效果最好的竟然是最简单的ARIMA时间序列预测模型,不知道是不是我没有调参还是模型太过简单,因为时间也不是很多,最后那几天真的是很赶,赶着搭建lstm模型(因为听别人说lstm可以达到0.12),但是实际跑出来的结果却不尽人意。最后我们的分数停留在了0.1310,很渣,但是这次比赛我学到了不少东西,尤其是用pandas,numpy处理数据,以及用keras搭建模型。
话不多说,具体写一下我的时间序列模型是怎么搭建的吧。本次比赛我们只用到了flow_train.csv的数据,另一个transition 的文件我实在没有想到怎么用,很想看看其他大佬是怎么用的。
- 数据处理,将原始数据转化为差分,使得数据变得比较稳定。因为时间序列模型只有在数据稳定的情况下才会取得好的效果。
- 训练策略:将每个district以及每个y值分开训练。
首先,导入我们要用的库:
from statsmodels.tsa.arima_model import ARIMA
import pandas as pd
import numpy as np
import datetime
然后读取flow_