1 了解赛题
- 赛题概况
- 数据概况
- 预测指标
- 分析赛题
1.1 赛题概况
本次比赛任务是利用历史数据并结合地图信息,预测五和张衡交叉路口未来一周周一(2019年2月11日)和周四(2019年2月14日)两天的5:00-21:00通过wuhe_zhangheng路口4个方向的车流量总和。
要求模型输出格式如下:
{"data":{"resp_data":{"wuhe_zhangheng":[1,4,5,6,4...]}}}
从5:00开始每5min的预测数据,第一个数据为5:00-5:05的流量值,最后一个数据为20:55-21:00。两天的数据按时间先后放在一起,总共有384个数据。
小提示:如果不考虑天气、周边活动、节假日等因素,预测结果可能不准确哦。
1.2 数据概况
首先官方给出的数据说明如下:
将数据集下载下来以后,可以观察到数据集文件分布如下:
以上每个文件夹对应一个日期下的数据,打开其中一个文件夹,可以看到如下文件:
由文件名不难看出,每个csv文件为当日对应路口方向上的车流量信息,记事本查看结果如下:
对应官方的说明不难看出,第一列数据对应time,第二列为cross,第三列为direction,第四列为leftFlow,第五列为straightFlow
· time - 时间
· cross - 路口名
· direction - 车流起始方向
· leftFlow - 左转车流
· straightFlow - 直行车流
1.3 预测指标
第一部分(分类问题)
分类问题评价标准:预测的评价还是通过每一个5min预测车流和真实通过车流对比,看看趋势是否一致(比如10月19日的5:00到5:05的真实车流是4,10月20日的5:00到5:05的真实车流为5,那么只要车流预测值大于4,就得100分,最后得分为所有得分求加权平均(权重为该时间段所在小时的车流量占16小时总车流的比重))。
第二部分(回归问题)
回归问题评价标准:预测的评价还是通过每一个5min 预测车流和真实通过车流通过grade公式计算最后得分,加权细则与第一部分相同:
其中wi为权重,xj为真实车流数据,xj拔为预测车流数据,ε为e-9。
最后将两部分分数做归一化处理,第一部分占比40%,第二部分占比60%。
1.4 分析赛题
1)此题为传统的数据挖掘问题,通过数据科学以及机器学习深度学习的办法来进行建模得到结果。
2)此题是一个典型的回归问题。
3)主要应用xgb、lgb、catboost,以及pandas、numpy、matplotlib、seabon、sklearn、keras等等数据挖掘常用库或者框架来进行数据挖掘任务。
4)通过EDA来挖掘数据的联系和自我熟悉数据。
2 初步代码
· 数据读取
· 评价指标
2.1 数据读取
由于官方给的数据分布在不同的文件文件夹中,为了方便观察和拆分训练测试集,首先需要把他们合并起来,代码如下:
1 import pandas as pd 2 import os 3 4 csv_list = [] 5 # 指定数据集根目录 6 root_path = 'C:/Users/animator/Desktop/pre-data/' 7 # 获取所有日期对应文件夹名 8 for i in os.listdir(root_path): 9 csv_path = root_path + i 10 # 从日期文件夹中获取所有csv文件并添加到列表中 11 for j in os.listdir(csv_path): 12 r_path = csv_path + '/' + j 13 csv_list.append(r_path) 14 15 print("发现csv文件个数:",len(csv_list)) 16 17 # 将列表中所有文件的内容重新写入新文件allData.csv中 18 for i in csv_list: 19 csv = open(i,'rb').read() 20 with open('allData.csv', 'ab') as f: 21 f.write(csv) 22 print("合并完成!") 23 24 # pandas显示首尾数据 25 csv_data = pd.read_csv("./allData.csv",header=None,names=['time','cross','direction','leftFlow','straightFlow']) 26 print(csv_data.head(10)) 27 print(csv_data.tail(10))
运行结果如下: