# 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
```
这里有一些可选参数,可以根据需要调整参数内容,参数设置没有固定顺序。除了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
```
(`HA`和`ARIMA`算法不需要训练,直接测试即可查看结果)
### 3、查看结果
如果想查看其他算法的测试结果,可以在bash窗口执行`show_results.py`文件,两个参数为`dataset`和`model`,选择数据集:
```bash
python show_results.py --dataset METR_LA --model HA
```
- `ARIMA`算法比较耗时,测试数据需要一天时间才能生成,这里仅仅展示测试误差。
- 程序会读取之前的测试结果并整理成表格,输出到命令行窗口,如下图所示:
- 指定算法后会生成预测结果与真实结果对比的图片。`--model`可以增加多个算法,例如 `--model HA LR`,但为了显示效果,不建议增加2个以上算法。图片路径为:`./test_results/predict_results.png`
## 四、环境说明
算法开发环境为`anoconda` + `pytorch`,编程语言为Python。
- **Anaconda是一个用于科学计算的Python发行版,Anaconda支持 Linux, Mac, Windows系统,提供了包管理与环境管理]的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。Anaconda利用工具/命令`conda`来进行package和environment的管理,并且已经包含了Python和相关的配套工具。**
- **PyTorch 是一种用于构建深度学习模型的功能完备框架,是一种通常用于图像识别和语言处理等应用程序的机器学习。使用 Python 编写,因此对于大多数机器学习开发者而言,学习和使用起来相对简单。PyTorch 的独特之处在于,它完全支持 GPU,并且使用反向模式自动微分技术,因此可以动态修改计算图形。这使其成为快速实验和原型设计的常用选择。**
## 五、其他说明
所有算法在METR_LA数据集下的训练过程已经结束,可以直接进行测试查看结果。`PEMSD4`和`PEMSD8`数据集下算法的效果如何,需要自己动手操作。
源码在