数据集地址:PVCGN/data at master · liuwj2000/PVCGN (github.com)
1 数据集介绍
- 从5:15到23:30的地铁乘客流量预测
- 使用前四个时间间隔(15分钟 x 4 = 60分钟)的地铁乘客流量(进/出流量)来预测未来四个时间间隔(15分钟 x 4 = 60分钟)的地铁乘客流量(进/出流量)
- 5:15-6:15 -- 预测 -> 6:15-7:15
- 5:30-6:30 -- 预测 -> 6:30-7:30
- ...
- 21:15-22:15 -- 预测 -> 22:15-23:15
- 21:30-22:30 -- 预测 -> 22:30-23:30
- 每天可以分为66个时间片段
- 使用前四个时间间隔(15分钟 x 4 = 60分钟)的地铁乘客流量(进/出流量)来预测未来四个时间间隔(15分钟 x 4 = 60分钟)的地铁乘客流量(进/出流量)
- 杭州和上海每个数据集,各有六个pkl文件
- 三个用于地铁乘客流量数据
- 一个训练集、一个验证集和一个测试集
- 三个用于地铁图信息
- graph_conn.pkl: 地铁的物理图
- graph_sml.pkl: 地铁的相似性图
- graph_conn.pkl: 地铁的相关图
- 三个用于地铁乘客流量数据
2 数据读取
2.1 流量数据
2.1.1 训练数据
python
import pickle
import os
os.chdir('data/shanghai/')
f=open('train.pkl','rb')
a=pickle.load(f)
a
字符串5:30表示从5:15到5:30的时间间隔
python
a['x'].shape,a['y'].shape
#((4092, 4, 288, 2), (4092, 4, 288, 2))
a['xtime'].shape,a['ytime'].shape
#((4092, 4), (4092, 4))
- 可以看到,这个数据是一个由4个ndarray组成的字典
- x: 前四个时间间隔的地铁乘客流量(进/出流量)
- 其形状是[T, n, N, D]
- T是时间片段的数量(62天)
- n是输入序列的长度(这里是4)
- N是地铁站的数量
- D是 inflow 和 outflow,所以为2
- 其形状是[T, n, N, D]
- y: 下四个时间间隔的地铁乘客流量(进/出流量)
- 其形状也是[T, m, N, D]
- m是输入序列的长度(这里是4)
- 其形状也是[T, m, N, D]
- xtime: x的时间戳。其形状是[T, n]
- ytime: y的时间戳。其形状是[T, m]
- x: 前四个时间间隔的地铁乘客流量(进/出流量)
2.1.2 测试数据
python
import pickle
f=open('val.pkl','rb')
a=pickle.load(f)
a['x'].shape,a['y'].shape,a['xtime'].shape,a['ytime'].shape
#((594, 4, 288, 2), (594, 4, 288, 2), (594, 4), (594, 4))
2.1.3 训练数据
python
import pickle
f=open('test.pkl','rb')
a=pickle.load(f)
a['x'].shape,a['y'].shape,a['xtime'].shape,a['ytime'].shape
#((1386, 4, 288, 2), (1386, 4, 288, 2), (1386, 4), (1386, 4))
2.2 地图数据
2.2.1 地铁站的物理图
python
import pickle
f=open('graph_sh_conn.pkl','rb')
a=pickle.load(f)
a,a.shape
'''
(array([[1., 1., 0., ..., 0., 0., 0.],
[1., 1., 1., ..., 0., 0., 0.],
[0., 1., 1., ..., 0., 0., 0.],
...,
[0., 0., 0., ..., 1., 1., 0.],
[0., 0., 0., ..., 1., 1., 1.],
[0., 0., 0., ..., 0., 1., 1.]]),
(288, 288))
'''
2.2.2 地铁站的相关图
python
import pickle
f=open('graph_sh_cor.pkl','rb')
a=pickle.load(f)
a,a.shape
'''
(array([[0. , 0.01539433, 0.02738432, ..., 0. , 0. ,
0. ],
[0. , 0. , 0. , ..., 0. , 0. ,
0. ],
[0. , 0.01502989, 0. , ..., 0. , 0. ,
0. ],
...,
[0. , 0. , 0. , ..., 0.01615014, 0. ,
0.03536008],
[0. , 0. , 0. , ..., 0. , 0.0092369 ,
0. ],
[0. , 0. , 0. , ..., 0.03341621, 0.00712248,
0.01228689]]),
(288, 288))
'''
2.2.3 地铁站的相似性图
python
import pickle
f=open('graph_sh_sml.pkl','rb')
a=pickle.load(f)
a,a.shape
'''
(array([[1. , 0. , 0.13627907, ..., 0. , 0. ,
0. ],
[0. , 1. , 0. , ..., 0. , 0. ,
0. ],
[0.13627907, 0. , 1. , ..., 0. , 0. ,
0. ],
...,
[0. , 0. , 0. , ..., 1. , 0. ,
0. ],
[0. , 0. , 0. , ..., 0. , 1. ,
0. ],
[0. , 0. , 0. , ..., 0. , 0. ,
1. ]]),
(288, 288))
'''