pip install -r requirements.txt
python step0_transfer.py --mode xx
参数说明:
- --mode函数指示匹配的模式,可以是traj,指向匹配训练数据,或者eta_task指向任务3所需要的测试数据
python step1_mapMatching.py --mode xxx [--denoise]
参数说明:
- --mode函数指示匹配的模式,可以是traj,指向匹配训练数据,或者eta_task指向任务3所需要的测试数据
- --denoise是一个
store_true
模式的参数,添加后会加入插值去噪处理
python step2_rodeClassify.py
python step3_etaEst.py
python step4_transfer_jump.py
python step4_mapMatching.py
python step4_prediction.py
- DM_2024_Dataset:课程组提供数据(具体说明见文件夹内的说明文档)
- runs:为保证整洁性,将运行全过程生成的中间代码存储在该文件夹中
- ori_xx.csv:坐标转换前的xx.csv数据
- gcj_xx.csv:坐标转换后的xx.csv数据
- matched_points_xx.csv:完成STEP1后,不去噪情况下对xx.csv和road.csv进行匹配后的结果
- matched_points_den_xx.csv:完成STEP1后,去噪情况下对xx.csv和road.csv进行匹配后的结果
- road_filled.csv:完成STEP2后,补全路段分类的数据
- eta_task_filled.csv:完成STEP3后,不全到达时间的数据
- step0_transfer.py:坐标转换
- step1_mapMatching.py:任务一,路网匹配代码
- step2_roadClassify.py:任务二,路段分类代码
- step3_etaEst.py:任务三,ETA估计代码
- step4_mapMatching:任务四,测试集的路网匹配
- Step4_prediction:任务四,下一跳预测
利用课程组给出的transfer.py进行修改后实现
主要修改为:为代码添加了一个参数,该参数可以为"traj"和"eta_task"之一,为"traj"时转换traj.csv
中的数据,反之转换eta_task.csv
中的数据
我们选取'tunnel', 'bridge', 'roundabout', 'oneway','lanes', 'length', 'maxspeed'以及路段位置信息作为特征,并将上述特征分为两类:①数值型特征,即车道数、路段最大速度等特征;②类别型特征,即是不是桥、是不是隧道等特征。
我们对两类特征分别进行不同的预处理后,共同构成训练所用特征:对数值型特征进行标准化处理,对类别型特征,将其转为独热码。
上述数据处理借用python库scikit-learn的ColumnTransformer实现。
首先,为了更好的对比分类器特性并复习本学期所学内容,对分类器的优缺点做出如下归纳:
以不同分类器间的差异为导向,我们需要对任务特性进行分析:
特性一:数据:量大,非线性,具有噪声
任务为根据多项特征预测路段类别,根据实际场景分析,其多项特征与路段类别间显然不存在线性关系。
受限于道路数据的采集方式,道路数据具有难以避免的噪声。
特性二:对预测速度要求较低
首先,轨迹数据挖掘这一整体任务并非具有强实时性的任务;其次,在整体任务重,路段分类这一具体任务的作用为根据输入的路段特征判断其分类,本任务并不处于某种循环结构下。综上,本任务对速度的要求较低。
特性三:易过拟合
受限于数据,数据特征的复杂性有限,容易导致模型过拟合。
结合任务特性,我们可以根据其数据量大、非线性、具有明显噪声的特点,排除掉逻辑回归分类器、支持向量机和决策树。根据任务容易过拟合的特点,我们可以排除神经网络分类器,并优先考虑随机森林分类器。朴素贝叶斯分类器假设特征独立,常用于文本分类,这里并不优先考虑使用该分类器。
综上所述,借助分类器的性质和任务特性,我们可以优先考虑K近邻分类器和随机森林分类器。经实验,最终选择随机森林分类器。
对于模型的评估,通过计算测试集中,正确预测路段数和总路段数的比值,得到预测准确率,依次为指标评估分类效果。最终模型的分类准确率为0.83。
任务目的为对每一个点估计到达时间,但对速度的预测才是本任务的核心预测点,到达时间根据速度计算。
速度具有两部分影响因素:①路段特征:路段类别(hightway)以及进行路段分类所用到的类别型特征('lanes','tunnel','bridge','roundabout','oneway');②轨迹点所在路段的轨迹数量,用以表现该路段的车流量。
因此,实现本任务的核心思路为,选用随机森林模型作为核心模型,以上述特征为输入,以轨迹点的速度为输出。训练上述模型,以实现对速度的估计,进而利用通过计算得到到达时间。
具体而言,通过上述分析,我们实际需要预测的标签是速度,这需要我们首先计算同一轨迹中,相邻轨迹点的距离差和时间差,进而计算速度。
除此之外,我们需要补充路段的轨迹数量特征,这需要我们在数据准备阶段做以统计。
完成上述数据处理后,我们利用上述数据训练一个随机森林模型,得到的是一个能够估计运行速度的模型。
在预测阶段,我们同样需要需要做与上面相同的数据处理,在预测得到速度后,我们需要根据轨迹点间的距离差,以及轨迹的起点时间,依次计算得到每一轨迹点的到达时间。
对于模型评估,我们利用估计时间的MSE作为评估指标,我们所得到的最终MSE为0.0002。
- 路网匹配
- 基本功能实现
- 路网匹配的去噪处理
- 路段分类
- 基本功能实现
- 路段分类更新数据
- 路段分类分类器调研优化
- ETA估计
- 基本功能实现
- ETA估计预测部分
- ETA估计模型优化
- 下一跳预测
- 基本功能实现