数据集笔记:杭州 & 上海 地铁客流数据

数据集地址: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个时间片段
  • 杭州和上海每个数据集,各有六个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
    • y: 下四个时间间隔的地铁乘客流量(进/出流量)
      • 其形状也是[T, m, N, D]
        • m是输入序列的长度(这里是4)
    • xtime: x的时间戳。其形状是[T, n]
    • ytime: y的时间戳。其形状是[T, m]

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))
'''
相关推荐
程序员Xu4 小时前
【LeetCode热题100道笔记】二叉树的右视图
笔记·算法·leetcode
程序员Xu5 小时前
【LeetCode热题100道笔记】二叉搜索树中第 K 小的元素
笔记·算法·leetcode
DKPT5 小时前
JVM中如何调优新生代和老生代?
java·jvm·笔记·学习·spring
我真的是大笨蛋8 小时前
K8S-基础架构
笔记·云原生·容器·kubernetes
程序员Xu11 小时前
【LeetCode热题100道笔记】腐烂的橘子
笔记·算法·leetcode
IT199511 小时前
Wireshark笔记-DHCP两步交互流程与数据解析
网络·笔记·wireshark
ST.J11 小时前
SQL与数据库笔记
数据库·笔记·sql
肥肠可耐的西西公主11 小时前
后端(JDBC)学习笔记(CLASS 1):基础篇(一)
笔记·学习
悠哉悠哉愿意13 小时前
【数学建模学习笔记】无监督聚类模型:分层聚类
笔记·python·学习·数学建模
UQI-LIUWJ13 小时前
unsloth 笔记;数据集
笔记