# TrafficClass **Repository Path**: Nagi-ovo/traffic-class ## Basic Information - **Project Name**: TrafficClass - **Description**: 该程序用于课堂教学,包含了HA,LR等7个经典的算法,感兴趣的同学可以克隆学习。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-09-20 - **Last Updated**: 2023-09-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 交通流预测程序使用说明 交通流是指汽车在道路上连续行驶形成的车流。广义上还包括其他车辆的车流和人流。在某段时间内,在不受横向交叉影响的路段上,交通流呈连续流状态;在遇到路口信号灯管制时,呈断续流状态。交通流参数主要包括平均车流量、平均车速、平均占有率、车流密度、车头间距等。在这里,我们采用**交通流量数据**测试算法。 ## 一、数据集简介 - **METR-LA**,洛杉矶高速路数据集,间隔5分钟 - **PeMSD4和PeMSD8**,加利福尼亚高速路数据,间隔5分钟 ## 二、预测算法简介 - **HA** History Average model - **LR** Linear Regression model - **ARIMA** Autoregressive Integrated Moving Average model - **GRU** Gate Recurrent Unit - **LSTM** Long Short Term Memory (长短期记忆) - **STGCN** Spatio-Temporal Graph Convolutional Networks - **GWN** Graph WaveNet for Deep Spatial-Temporal Graph Modeling ## 三、操作说明 ### 1、运行程序 打开`bash`终端进入程序文件夹根目录,执行以下命令: ```bash python run_model.py --enable-cuda --dataset METR_LA --model LR ``` image4 这里有一些可选参数,可以根据需要调整参数内容,参数设置没有固定顺序。除了dataset和model这两个参数需要改变外,其它参数可以不做修改,保持默认即可。 | 参数名称 | 参数描述 | 可选参数 | 默认参数 | | ------------------------ | :----------------------------------------------------------- | :------------------------------------------------- | :-----------: | | dataset | 数据集名称。 | `METR_LA`, `PEMSD4`, `PEMSD8` | `METR_LA` | | model | 算法名称。 | `HA`, `LR`, `ARIMA`, `GRU`, `LSTM`, `STGCN`, `GWN` | `LR` | | mode | 执行模式。执行训练过程或者测试过程。若选择`train`,程序开始训练指定算法并输出训练好的模型;若为test,则加载指定的模型,测试模型效果。 | `train,` `test` | `train` | | epochs | 训练轮次。 | 整型 | 60 | | batchsize | 每一个小批次数据集的数据量。 | 整型 | 24 | | input_timesteps | 输入数据的时间步长。 | 整型 | 12 | | output_timesteps | 输出数据的时间步长。 | 整型 | 12 | | train_per | 训练集比例。 | 浮点型 | 0.6 | | val_per | 验证集比例。 | 浮点型 | 0.2 | | test_per | 测试集比例。 | 浮点型 | 0.2 | | lr | 学习率。 | 浮点型 | 0.0015 | | enable-cuda | 显卡加速选项,有该参数将选择显卡加速训练,没有该参数则不采用显卡加速。。 | 无 | 无 | ### 2、测试程序 某一个算法模型训练过程结束后,可以设定mode参数为test,model为你想要测试的算法,运行和查看该模型的性能,算法将会输出`mae`和`rmse`两个指标。 ```bash python run_model.py --enable-cuda --dataset METR_LA --mode test --model LR ``` image3 (`HA`和`ARIMA`算法不需要训练,直接测试即可查看结果) ### 3、查看结果 如果想查看其他算法的测试结果,可以在bash窗口执行`show_results.py`文件,两个参数为`dataset`和`model`,选择数据集: ```bash python show_results.py --dataset METR_LA --model HA ``` - `ARIMA`算法比较耗时,测试数据需要一天时间才能生成,这里仅仅展示测试误差。 - 程序会读取之前的测试结果并整理成表格,输出到命令行窗口,如下图所示: image1 - 指定算法后会生成预测结果与真实结果对比的图片。`--model`可以增加多个算法,例如 `--model HA LR`,但为了显示效果,不建议增加2个以上算法。图片路径为:`./test_results/predict_results.png` image2 ## 四、环境说明 算法开发环境为`anoconda` + `pytorch`,编程语言为Python。 - **Anaconda是一个用于科学计算的Python发行版,Anaconda支持 Linux, Mac, Windows系统,提供了包管理与环境管理]的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。Anaconda利用工具/命令`conda`来进行package和environment的管理,并且已经包含了Python和相关的配套工具。** - **PyTorch 是一种用于构建深度学习模型的功能完备框架,是一种通常用于图像识别和语言处理等应用程序的机器学习。使用 Python 编写,因此对于大多数机器学习开发者而言,学习和使用起来相对简单。PyTorch 的独特之处在于,它完全支持 GPU,并且使用反向模式自动微分技术,因此可以动态修改计算图形。这使其成为快速实验和原型设计的常用选择。** ## 五、其他说明 所有算法在METR_LA数据集下的训练过程已经结束,可以直接进行测试查看结果。`PEMSD4`和`PEMSD8`数据集下算法的效果如何,需要自己动手操作。 源码在