# traffic_prediction
## 介绍
交通流量预测
## 环境安装
> 如果有conda虚拟环境,则先进入虚拟环境,然后再安装
使用以下命令安装环境
```shell
pip install -r requirements.txt
```
## 快速开始
进入到项目根目录下,/traffic_flow_prediction
执行:
```python
python train.py
```
## 说明
> 搞明白数据是什么样子的,模型接受什么样子的数据
### 项目结构
***
- `data`:数据文件夹,存放了训练需要用到的所有数据,其中passenger_flow.csv为原始数据。
- passenger_flow.csv中的特征:
- `total`:交通总流量
- `one`:一号线流量
- `weather1,weather2`:分别是当天的最低气温和最高气温,不过将这两个序列直接输入到模型中并不是一种明智的做法,我选择了计算平均气温`wenther_mean`,然后将这个平均气温输入到模型中。
- `temperature_low,temperature_high`:最高气温和最低气温,以及后面的平均气温`temperature_mean`。
- `wind`:当天的风级,忽略了方向因素,它应该不重要
- `day_of_week`:取值为`0~6`,表示是一周中的第几天,`day_of_month,day_of_year`同理
- `month,year`:表示月份和年份。
> 序列一般多多少少都会有一定的周期属性,所以将年月日这些信息添加进来是可行的,其他人也有一些这么做。
- `train`和`test`文件夹下是由原始数据生成的训练和测试样本,每一个样本都是一个序列,其`shape`为[序列长度,特征维度]
- 至于其他的一些`csv`文件,可以不用管
- `graph`:存放训练过程中网络在测试集上的表现
- `tensorboard`:存放训练过程中loss曲线等。打开一个终端,输入tensorboard.txt中的命令,点开终端中生成的链接,就可以看到loss曲线了
- `backup`:存放模型数据
### 代码
***
- `constant.py`:存放了一些常量,和一些全局可设置参数
- `INPUT_WINDOW` 生成的训练样本每一个都是序列,INPUT_WINDOW指明了序列的长度
- `OUTPUT_WINDOW`
预测下几个时间步,1代表了单步预测,输入[0:99]时间步,预测时间步为100的序列值。当这个值大于1的时候,就是多步预测了,通常来讲多步预测效果不比单步预测,可以试一下,效果是立竿见影的。
另外一点需要提的是,既然单步预测效果好,那么如何使用单步预测实现多步预测呢?举个例子,假设现在输入[0:99],输出[100],接下来将单步预测得到的那一个预测结果加入到输入数据中,即输入变成[1:100],然后再预测[101],以此类推。可以预见的是,这么做会叠加误差,后面的效果好不好看单步预测结果的准度了。这个做法被称为`no-teacher-force`。
- `TARGET`:要预测的值,`one`是一号线交通流量,同时作为输入数据中的某一个特征和标签数据。
- `TARGET_LAG `:可以注意到,`Transformer`的`decoder`需要两个输入,其中一个是`encoder`的输出,另一个呢就是这个`TARGE_LAG`,它是由`TARGET`通过整体向后偏移一个时间步得到的。
- `FEATURES_MAP`:一个map,它描述了输入数据中选用哪些特征。
- `FEATURES_CHOOSE`:选择`FEATURES_MAP`中的哪一个值。
- `MODEL_CHOOSE`,`MODELS`:模型选择
- `weather_json`:将爬虫得到的天气数据编码成数字,毕竟模型接受的输入是数值,而不是字符串。这么编码是很粗糙的,但是我目前也找不到更好的方式了,我没有找到别人有把天气数据加进来的例子。
- `covariance_data.py`:爬虫爬取天气数据,不做过多介绍了。
- `dataset.py`:数据集,也无需过多关注
- `model.py`:模型,这里有三个模型:`TransAm`,`LSTMModel`和`Transformer`。对应了`MODEL_CHOOSE`中的三个选择。在下文会对这些模型进行介绍。
- `prediction_goahead.py`:使用`no-teacher-force`方式进行多步预测,还没有写,也不一定能用到。后面有时间再写吧。
- `train.py`:在训练集上训练和在测试集上测试。并且将测试集上的预测结果可视化。
- `util.py`:一些工具
- `DatasetUtils`:对数据进行预处理的一些操作
- `PlotUtils`:将预测结果可视化,如果有一些其他的可视化操作,可以在这个类上进行扩充
## 模型
***
- 类`PositionalEncoding`
是词嵌入类,通过`d_model`设置词嵌入的特征维度。默认最大长度为`5000`.
- `TransAm`
输入:【batch_size, sequence_length, feature_size】
输出:【batch_size, sequence_length, 1】这里的输出特征维度为1即代表了需要预测的序列值
使用了`Transformer`**的编码器**+**一个全连接**作为解码器。`input_feature_size`:设置输入数据的特征维度,`d_model`:词嵌入维度,编码器的输出特征维度是
模型的前向传播在`forward`函数中.
- `LSTM`
输入:【batch_size, sequence_length, feature_size】
输出:【batch_size, sequence_length, 1】
LSTM网络是一个传统的RNN结构,除了需要输入数据之外,还需要一个`state`来传递序列以前的信息,通常在第一个时间步的时候输入的`state`就是全零的张量,通过`init_hidden`函数生成。
- `Transformer`
输入:【batch_size, sequence_length, feature_size】
输出:【batch_size, sequence_length, 1】
完整的Transformer,标准的编码器解码器结构,使用自注意力机制。
<div align="center">
<img src="transformer_architecture.jpg" width="40%">
</div>
其中可以看到右半边的解码器除了接收编码器的输入之外,还接收一个经过shifted right的Outputs。
这个部分的词嵌入是通过`torch.nn.Embedding`来生成的,但是和之前的`PositionalEncoding`类作用是一样的,只不过是一个自定义,一个调用官方API。简单讲一下前向传播的流程,具体的还是需要自己看代码,或者理解模型结构,这样才能够调参:
- 编码
- 通过全连接层将输入数据的特征维度映射成d_model
- 添加词嵌入特征(即添加位置编码),单纯的自注意力机制并没有利用位置信息,位置信息是在这一步添加的!
- 编码并输出
- 解码
- 将编码输出和偏移量输入
- 通过全连接层将输入数据的特征维度映射成d_model
- 词嵌入添加位置信息
- 生成mask,掩盖偏移量中还使用不到的值,并将其设置为0
- 解码
- 通过全连接层将解码结果进行映射,得到最终输出
> 有一点需要注意,在TransAm中,输入数据有多个特征维度,添加词嵌入量时是对多个维度分别添加,然后进行拼接;而在Transformer中,是先将含有多个特征维度的输入全连接映射成和词嵌入特征维度相同的张量,然后再添加词嵌入量。后一种方法应该更好一点。
## 使用代码
***
### 1、使用不同的数据
1. 在`constant.py`中修改`FEATURES_MAP`和`FEATURES_CHOOSE`选择不同的特征
2. 在`util.py`调用`regenerate_dataset()`函数重新生成训练集和测试集
3. 完成训练
### 2、使用不同的网络模型
1. 修改`constan.py`中的`MODEL_CHOOSE`选择不同的模型,可以在`model.py`中修改模型参数
2. 完成训练
## 训练
***
主要包含
- 模型获取
- 训练
- 测试
在训练阶段,使用了`StepLR`来动态调整学习率
```python
scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=1, gamma=0.95)
```
经过`step_size`个`epoch`将`lr`修改为$lr*gamma$。
在测试阶段,使用`predictions`和`truth`来保存预测值和真值,用来绘图。
## 其�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
python机器学习的交通流量预测项目代码+使用文档(毕业设计&期末大作业)含有代码注释,新手也可看懂,个人手打98分项目,毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。该项目系统功能完善、界面美观、操作简单、功能齐全、管理便捷可以作为毕设、期末大作业使用。 python机器学习的交通流量预测项目代码+使用文档(毕业设计&期末大作业)含有代码注释,新手也可看懂,个人手打98分项目,毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。该项目系统功能完善、界面美观、操作简单、功能齐全、管理便捷可以作为毕设、期末大作业使用。 python机器学习的交通流量预测项目代码+使用文档(毕业设计&期末大作业)含有代码注释,新手也可看懂,个人手打98分项目,毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。该项目系统功能完善、界面美观、操作简单、功能齐全、管理便捷可以作为毕设、期末大作业使用。 python机器学习的交通流量预测项目代码+使用文档(毕业设计&期末大作业)含有代码注释,新手也可看懂,个人手打98分项目,毕业
资源推荐
资源详情
资源评论
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JPG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
共 267 条
- 1
- 2
- 3
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/bdd9b709dbb6441f8d94a5f955c04a3b_qq_38140936.jpg!1)
王二空间
- 粉丝: 3170
- 资源: 782
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)