├── tmp ├── 图片1.png ├── 图片10.png ├── 图片11.png ├── 图片12.png ├── 图片13.png ├── 图片14.png ├── 图片15.png ├── 图片16.png ├── 图片17.png ├── 图片2.png ├── 图片3.png ├── 图片4.png ├── 图片5.png ├── 图片6.png ├── 图片7.png ├── 图片8.png └── 图片9.png ├── README.md └── 说明文档.md /tmp/图片1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JUDAIhyper/Traffic_Predict/HEAD/tmp/图片1.png -------------------------------------------------------------------------------- /tmp/图片10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JUDAIhyper/Traffic_Predict/HEAD/tmp/图片10.png -------------------------------------------------------------------------------- /tmp/图片11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JUDAIhyper/Traffic_Predict/HEAD/tmp/图片11.png -------------------------------------------------------------------------------- /tmp/图片12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JUDAIhyper/Traffic_Predict/HEAD/tmp/图片12.png -------------------------------------------------------------------------------- /tmp/图片13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JUDAIhyper/Traffic_Predict/HEAD/tmp/图片13.png -------------------------------------------------------------------------------- /tmp/图片14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JUDAIhyper/Traffic_Predict/HEAD/tmp/图片14.png -------------------------------------------------------------------------------- /tmp/图片15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JUDAIhyper/Traffic_Predict/HEAD/tmp/图片15.png -------------------------------------------------------------------------------- /tmp/图片16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JUDAIhyper/Traffic_Predict/HEAD/tmp/图片16.png -------------------------------------------------------------------------------- /tmp/图片17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JUDAIhyper/Traffic_Predict/HEAD/tmp/图片17.png -------------------------------------------------------------------------------- /tmp/图片2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JUDAIhyper/Traffic_Predict/HEAD/tmp/图片2.png -------------------------------------------------------------------------------- /tmp/图片3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JUDAIhyper/Traffic_Predict/HEAD/tmp/图片3.png -------------------------------------------------------------------------------- /tmp/图片4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JUDAIhyper/Traffic_Predict/HEAD/tmp/图片4.png -------------------------------------------------------------------------------- /tmp/图片5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JUDAIhyper/Traffic_Predict/HEAD/tmp/图片5.png -------------------------------------------------------------------------------- /tmp/图片6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JUDAIhyper/Traffic_Predict/HEAD/tmp/图片6.png -------------------------------------------------------------------------------- /tmp/图片7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JUDAIhyper/Traffic_Predict/HEAD/tmp/图片7.png -------------------------------------------------------------------------------- /tmp/图片8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JUDAIhyper/Traffic_Predict/HEAD/tmp/图片8.png -------------------------------------------------------------------------------- /tmp/图片9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JUDAIhyper/Traffic_Predict/HEAD/tmp/图片9.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Traffic_Predict 2 | 2019年广西人工智能设计大赛第6赛道赛题:交通-地铁客流量预测 3 | 本项目是参加比赛并获得三等奖的作品,Traffic_dataAnalysis为初始数据分析处理文件,Traffic_modelNPre为模型文件。 4 | 数据集将打包至百度云,链接见[交通数据集](https://pan.baidu.com/s/1VM2ysj2KVY26EkRo76DNtg) ,提取码:q3ms 5 | ## 赛题:交通-地铁客流量预测 6 | 赛题说明: 7 | 随着我国轨道交通的建设发展,地铁已经成为公共出行的重要方式。在节假日、比赛、演出等重要事件发生时,地铁客流会面临巨大压力。 8 | 大赛为参赛选手提供的是郑州市某年8-11月各地铁闸机刷卡数据,从数据中可以根据交易类型提取出进出站状态。参赛选手需预测12月1日-7日7天内每个站点的日客流量(交易类型为21、22次数之和),为节日安保、流控等提供预警支持。 9 | 详情见[参赛代码说明文档](https://github.com/JUDAIhyper/Traffic_Predict/blob/master/%E8%AF%B4%E6%98%8E%E6%96%87%E6%A1%A3.md) 10 | -------------------------------------------------------------------------------- /说明文档.md: -------------------------------------------------------------------------------- 1 | # 交通-地铁客流量预测赛题说明文档 2 | 3 | **摘要:** 本题要求根据郑州市某年8-11月各地铁闸机刷卡数据来预测12月1-7日的地铁客流量。通过对数据进行分析和清理后我们发现该问题为时序模型问题,因此我们在建立模型时分析并去除了异常的时间点,再应用构建的时序模型预测出相应的客流量。摘要:本题要求根据郑州市某年8-11月各地铁闸机刷卡数据来预测12月1-7日的地铁客流量。通过对数据进行分析和清理后我们发现该问题为时序模型问题,因此我们在建立模型时分析并去除了异常的时间点,再应用构建的时序模型预测出相应的客流量。 4 | ## 1 准备工作 5 | 本次比赛我们进行数据处理的操作系统为linux,使用的编程语言为Python3.6,编译平台为jupyter notebook。 6 | ## 2 数据分析 7 | ### 2.1 字段分析 8 | 比赛数据给了41个字段的数值,用于预测每日客流量。从题目要求中可知,我们所需要输出的预测结果只有“日期”,“TRADE_ADDRESS(刷卡地点编号)”和“预测客流量”三种数据。这意味着很多所给的字段可能是无用的。并且我们发现,预测客流量并不是一个直观的字段,因此需要我们自己对其进行整理。 9 | 建立ipython文件Traffic_dataAnalysis。先用pandas库读取csv的数据: 10 | 11 | ![img](https://github.com/JUDAIhyper/Traffic_Predict/blob/master/tmp/%E5%9B%BE%E7%89%871.png?raw=true) 12 | 13 | 客流量并没有出现在字段中,由题目要求得知,每个站点的日客流量是交易类型21,22之和,因此客流量实际上就是对应行的和。 14 | 因此我们选择用python进行作图,来判断字段之间的联系和影响。 15 | 16 | ![img](https://github.com/JUDAIhyper/Traffic_Predict/blob/master/tmp/%E5%9B%BE%E7%89%872.png?raw=true) 17 | 18 | 通过作图我们可以看出,每个月不同刷卡地点的客流量的变化趋势十分接近,因此可以知道刷卡地点TRADE_ADDRESS字段的数据拟合的非常好。 19 | ### 2.2 数据清洗 20 | 通过分析我们字段我们得出结论,这是一个关于时序模型预测的问题。其余无关的属性字段对预测并没有帮助,可以去除。因为预测的数据单位为天(day),因此我们先将日期进行正则处理,只取年月日(Y-m-d): 21 | 22 | ![img](https://github.com/JUDAIhyper/Traffic_Predict/blob/master/tmp/%E5%9B%BE%E7%89%873.png?raw=true) 23 | 24 | 增加字段TRADE_DATE_DAY: 25 | 26 | ![img](https://github.com/JUDAIhyper/Traffic_Predict/blob/master/tmp/%E5%9B%BE%E7%89%874.png?raw=true) 27 | 28 | 通过dataframe的排序求和,我们获得对应日期对应刷卡地点的客流量字段VAL: 29 | 30 | ![img](https://github.com/JUDAIhyper/Traffic_Predict/blob/master/tmp/%E5%9B%BE%E7%89%875.png?raw=true) 31 | 32 | 将重新整理的数据输出,此时便得到了用来训练时间序列模型的数据集。 33 | ### 2.3 特征工程 34 | 新建ipython文件Traffic_modelNPre,对新输出的数据集进行操作。 35 | 通过分析相关字段的客流量变化,可以看出其波动非常之大,这势必对模型的拟合产生影响,所以我们建立新字段VAL_LOG,对VAL进行指数转化,使变化值处于一个相对小的范围内。 36 | 37 | ![img](https://github.com/JUDAIhyper/Traffic_Predict/blob/master/tmp/%E5%9B%BE%E7%89%876.png?raw=true) 38 | ![img](https://github.com/JUDAIhyper/Traffic_Predict/blob/master/tmp/%E5%9B%BE%E7%89%877.png?raw=true) 39 | 40 | 针对整理好的数据,可以分析出: 41 | 地铁客流的时间序列具有一定的连续性,以一周为单位,整段时间的客流情况会具有相似性。 42 | 因此对于该题我们决定使用 **时间序列模型** 作为基本模型进行解答。 43 | 这时开始继续分析数据: 44 | 45 | ![img](https://github.com/JUDAIhyper/Traffic_Predict/blob/master/tmp/%E5%9B%BE%E7%89%878.png?raw=true) 46 | 47 | 该函数能提取相应TRADE_ADDRESS的时间序列数据,及每天的平均连接数。 48 | 49 | ![img](https://github.com/JUDAIhyper/Traffic_Predict/blob/master/tmp/%E5%9B%BE%E7%89%879.png?raw=true) 50 | 51 | 绘图结果如下,可以看出有存在异常的天数。 52 | 53 | ![img](https://github.com/JUDAIhyper/Traffic_Predict/blob/master/tmp/%E5%9B%BE%E7%89%8710.png?raw=true) 54 | 55 | 所以需要写如下函数将异常的日子过滤掉,此处的过滤策略是: 56 | 对每月特定时间段天数的数据求均值与标准差,然后将均值与标准差落在10%分位数以下和90%分位数以上的日子去除。 57 | 58 | ![img](https://github.com/JUDAIhyper/Traffic_Predict/blob/master/tmp/%E5%9B%BE%E7%89%8711.png?raw=true) 59 | 60 | 去除后序列如下: 61 | 62 | ![img](https://github.com/JUDAIhyper/Traffic_Predict/blob/master/tmp/%E5%9B%BE%E7%89%8712.png?raw=true) 63 | 64 | 将异常的天数筛选出来后,保留剩余的天数所对应的数据,并且将异常天数对应的日客流量取每月正常天数客流量的均值,使得模型能更好的拟合。这样我们便得到了新的数据集,保存在data_final文件夹中。这样,就完成了建立模型的前置工作。 65 | ## 3 建立模型 66 | 数据都已经准备好,可以开始着手模型的构建了。 67 | 因为地铁人流具有连续性的特征,我们使用ARMA来对预测进行一定的修正,模型如下: 68 | 69 | ![img](https://github.com/JUDAIhyper/Traffic_Predict/blob/master/tmp/%E5%9B%BE%E7%89%8713.png?raw=true) 70 | 71 | 我们选择了8-10月的数据作为临时训练集,将11月1-7日的数据作为验证集来测试模型拟合的好坏。通过计算得到,该时序模型的置信区间落在(2,0),因此我们的时间序列模型p,q数值的取值分别取2和0作为参数。 72 | 73 | ![img](https://github.com/JUDAIhyper/Traffic_Predict/blob/master/tmp/%E5%9B%BE%E7%89%8714.png?raw=true) 74 | 75 | 从结果图上来看,对于时间序列趋势的预测还算不错,但仍存在部分偏差。 76 | 模型基本构建完成,可以开始进行预测了。 77 | 78 | 79 | ## 4 结果预测 80 | 按照比赛要求的表格形式,输出成dataframe, 81 | 82 | ![img](https://github.com/JUDAIhyper/Traffic_Predict/blob/master/tmp/%E5%9B%BE%E7%89%8715.png?raw=true) 83 | 84 | 进行输出就完成了预测数据: 85 | 86 | ![img](https://github.com/JUDAIhyper/Traffic_Predict/blob/master/tmp/%E5%9B%BE%E7%89%8716.png?raw=true) 87 | 88 | 我们将训练模型保存,用9月1日-9月7日作为测试集进行预测,与实际数据比对,最终得到的MAE=4135.218。 89 | 90 | 91 | 92 | 93 | --------------------------------------------------------------------------------