Skip to content

bhsh0112/RoadDM

Repository files navigation

1 GetStart

1.1 环境配置

pip install -r requirements.txt

1.2 代码运行

1.2.1 轨迹坐标转换

python step0_transfer.py --mode xx

参数说明:

  • --mode函数指示匹配的模式,可以是traj,指向匹配训练数据,或者eta_task指向任务3所需要的测试数据

1.2.2 路网匹配

python step1_mapMatching.py --mode xxx [--denoise]

参数说明:

  • --mode函数指示匹配的模式,可以是traj,指向匹配训练数据,或者eta_task指向任务3所需要的测试数据
  • --denoise是一个store_true模式的参数,添加后会加入插值去噪处理

1.2.3 路段分类

python step2_rodeClassify.py

1.2.4 ETA估计

python step3_etaEst.py

1.2.5 下一跳预测

python step4_transfer_jump.py
python step4_mapMatching.py
python step4_prediction.py

2 文件说明

  • 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:任务四,下一跳预测

3 代码笔记

STEP0 坐标转换

​ 利用课程组给出的transfer.py进行修改后实现

​ 主要修改为:为代码添加了一个参数,该参数可以为"traj"和"eta_task"之一,为"traj"时转换traj.csv中的数据,反之转换eta_task.csv中的数据

STEP1 路网匹配

STEP2 路段分类

路段特征处理

我们选取'tunnel', 'bridge', 'roundabout', 'oneway','lanes', 'length', 'maxspeed'以及路段位置信息作为特征,并将上述特征分为两类:①数值型特征,即车道数、路段最大速度等特征;②类别型特征,即是不是桥、是不是隧道等特征。

我们对两类特征分别进行不同的预处理后,共同构成训练所用特征:对数值型特征进行标准化处理,对类别型特征,将其转为独热码。

上述数据处理借用python库scikit-learn的ColumnTransformer实现。

分类器选择

首先,为了更好的对比分类器特性并复习本学期所学内容,对分类器的优缺点做出如下归纳:

以不同分类器间的差异为导向,我们需要对任务特性进行分析:

特性一:数据:量大,非线性,具有噪声

任务为根据多项特征预测路段类别,根据实际场景分析,其多项特征与路段类别间显然不存在线性关系。

受限于道路数据的采集方式,道路数据具有难以避免的噪声。

特性二:对预测速度要求较低

首先,轨迹数据挖掘这一整体任务并非具有强实时性的任务;其次,在整体任务重,路段分类这一具体任务的作用为根据输入的路段特征判断其分类,本任务并不处于某种循环结构下。综上,本任务对速度的要求较低。

特性三:易过拟合

受限于数据,数据特征的复杂性有限,容易导致模型过拟合。

结合任务特性,我们可以根据其数据量大、非线性、具有明显噪声的特点,排除掉逻辑回归分类器、支持向量机和决策树。根据任务容易过拟合的特点,我们可以排除神经网络分类器,并优先考虑随机森林分类器。朴素贝叶斯分类器假设特征独立,常用于文本分类,这里并不优先考虑使用该分类器。

综上所述,借助分类器的性质和任务特性,我们可以优先考虑K近邻分类器和随机森林分类器。经实验,最终选择随机森林分类器。

评估分类效果

对于模型的评估,通过计算测试集中,正确预测路段数和总路段数的比值,得到预测准确率,依次为指标评估分类效果。最终模型的分类准确率为0.83。

STEP3 ETA估计

研究出发点

任务目的为对每一个点估计到达时间,但对速度的预测才是本任务的核心预测点,到达时间根据速度计算。

速度具有两部分影响因素:①路段特征:路段类别(hightway)以及进行路段分类所用到的类别型特征('lanes','tunnel','bridge','roundabout','oneway');②轨迹点所在路段的轨迹数量,用以表现该路段的车流量。

因此,实现本任务的核心思路为,选用随机森林模型作为核心模型,以上述特征为输入,以轨迹点的速度为输出。训练上述模型,以实现对速度的估计,进而利用通过计算得到到达时间。

算法实现

具体而言,通过上述分析,我们实际需要预测的标签是速度,这需要我们首先计算同一轨迹中,相邻轨迹点的距离差和时间差,进而计算速度。

除此之外,我们需要补充路段的轨迹数量特征,这需要我们在数据准备阶段做以统计。

完成上述数据处理后,我们利用上述数据训练一个随机森林模型,得到的是一个能够估计运行速度的模型。

在预测阶段,我们同样需要需要做与上面相同的数据处理,在预测得到速度后,我们需要根据轨迹点间的距离差,以及轨迹的起点时间,依次计算得到每一轨迹点的到达时间。

模型评估

对于模型评估,我们利用估计时间的MSE作为评估指标,我们所得到的最终MSE为0.0002。

TODO

  • 路网匹配
    • 基本功能实现
    • 路网匹配的去噪处理
  • 路段分类
    • 基本功能实现
    • 路段分类更新数据
    • 路段分类分类器调研优化
  • ETA估计
    • 基本功能实现
    • ETA估计预测部分
    • ETA估计模型优化
  • 下一跳预测
    • 基本功能实现

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published