GSNet数据解读

  • 原始数据
    • 1. `all_data.pkl`
    • 2. `risk_mask.pkl`
    • 3. `risk_adj.pkl`
    • 4. `road_adj.pkl`
    • 5. `poi_adj.pkl`
    • 6. `grid_node_map.pkl`
  • 数据理解
    • 维度
    • 格式
  • 如何读取四维数组?
    • 读空间分布
    • 读时间分布
    • 读其它分布
  • 结语

之前很少用过多维数组,不知道怎么读取。今天阅读论文《Learning Spatial-Temporal Correlation from Geographical and Semantic Aspects for Traffic Accident Risk Forecasting(AAAI 2021)》时,文章提供的原始数据是4维的,正好研究一下。

原始数据

代码和原始数据:https://github.com/Echohhhhhh/GSNet

cd到nyc文件夹,可以看到数据的Readme文件。我做了部分修改和说明后,摘录如下:
可以发现,原始数据由one-hot的0/1数据、和数值类型的温度、风险数据组合而成

1. all_data.pkl

2013.1~2013.12,one time interval is 1h
shape(T, D, W, H),D=48
T is the time line
D is the feature vector, descripted as follows:


0:risk(numeric,sum)
1~24:time_period,(one-hot)
25~31:day_of_week,(one-hot)
32:holiday,(one-hot)


33~39:POI (numeric)


40:temperature (numeric)
41:Clear,(one-hot)
42:Cloudy,(one-hot)
43:Rain,(one-hot)
44:Snow,(one-hot)
45:Mist,(one-hot)


46:inflow(numeric)
47:outflow(numeric)


W*H denotes the spatial grids.

基于原始数据,作者还抽取了以下五种预处理后的数据。

2. risk_mask.pkl

shape(W,H)
top risk region mask
z

3. risk_adj.pkl

risk similarity graph adjacency matrix
shape (N,N)

4. road_adj.pkl

road similarity graph adjacency matrix
shape(N,N)

5. poi_adj.pkl

poi similarity graph adjacency matrix
shape(N,N)

6. grid_node_map.pkl

map graph data to grid data
shape (W*H,N)

df = pd.read_pickle("./grid_node_map.pkl")
d2 = pd.DataFrame(df).astype(int)
d3 = np.array(d2)shape = d3.shape
for i in range(shape[0]):for j in range(shape[1]):if d3[i][j] == 1:print(i,j)print(shape)

数据理解

维度

TTT:时间轴(8760)
DDD: 特征数量(48),具体说明参见上文( all_data.pkl)的解释
W,HW,HW,H: 网格的横纵坐标(20*20)

格式

pkl文件是python里面保存文件的一种格式,如果直接打开会显示一堆序列化的东西(二进制文件)。
常用于保存神经网络训练的模型或者各种需要存储的数据。一般而言,通过pandas可以读取为numpy数组。

如何读取四维数组?

四维数组不好直观在Excel等软件中展示。一个很显然的想法是进行数据降维,固定某1-3个维度,展示其它维度的数据分布。

读空间分布

求每个网格在所有时间内的Accident次数总和分布,用热力图展示

import pandas as pd
import numpy as np
import seaborn as sb
df = pd.read_pickle("./all_data.pkl")
# (T, F, W, H)d_accident = df[:,0,:,:]
print(d_accident.shape) # T,W,H# spatial distribution
d2 = sum(d_accident)
print(d2.shape)
d2 = pd.DataFrame(d2).astype(float)
print(d2.shape)

**结果:**可以发现,在某一地区,事故比较集中。

读时间分布

求每个时段在所有空间内的Accident次数总和分布,用折线图展示

# temporal distribution
d_3 = np.sum(d_accident,axis = 1)
print(d_3.shape)
d_4 = np.sum(d_3,axis = 1)
print(d_4.shape)d4 = pd.DataFrame(d_4).astype(float)
import matplotlib.pyplot as plt
x = np.linspace(0,len(d4),len(d4))
plt.plot(x, d4.values)
plt.show()

结果: 可以发现事故在时间上具有一定的周期性,整体而言比较平稳。

读其它分布

可以考虑直接通过数组索引的方式,如df[:,0,:,:]读取(0是事故的index)

结语

Data understanding是做任何数据科学项目的第一步;通过合适的数据可视化方法,可以直观的展现数据的趋势。

读懂GSnet(一):pandas读取pkl格式的多维数组,可视化理解时空数据相关推荐

  1. python读取.pkl格式的文件

    运行代码工具jupyter notebook 读取文件放在运行目录下 #读取.pkl格式的文件 #读取.pkl格式的文件 import pickle path='test_keys.pkl' f=op ...

  2. node + ts读取csv文件为二维数组

    node + TypeScript读取csv文件为二维数组 CSDN用户名:jcLee95 邮箱:291148484@163.com 原创不易,感谢点赞支持. 在数据分析的时候经常需要读取csv格式的 ...

  3. c#读取图片成rgb二维数组

    全栈工程师开发手册 (作者:栾鹏) c#教程全解 c#读取图片成rgb二维数组,输入图片文件地址,输出颜色二维数组 测试代码 static void Main() {Color[,] allcolor ...

  4. java读取图片成rgb二维数组

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java读取图片成rgb二维数组 测试代码 public static void main(String[] args) {Color[][] a ...

  5. xlsx.full.js读取Excel数据转换成二维数组,sheet_to_array

    xlsx.full.js读取Excel的sheet数据转换成二维数组,sheet_to_array 解析sheet数据为二维数组 测试方法 效果 鉴于js-xlsx.js没有XLSX.util.she ...

  6. 【实践3】Python pandas读取Excel指定单元格 / 在指定单元格插入数据,不改变Excel格式

    简单介绍 有时会遇到只需将爬取的数据填入指定的单元格,而不需要更改Excel格式的情况,或是将一个Excel指定单元格内容复制后插入另一个Excel的单元格. 完整代码 import pandas a ...

  7. 豆瓣最高评分8.1!万维钢:读懂这本书,你会比身边人更深的理解这个时代

    ▲ 数据汪特别推荐 点击上图进入玩酷屋 小木用真金白银来给大家送礼物啦,特别感谢这些年一直以来大家对我们的支持,才让我们越做越好.(点我参与送礼活动) 这几年全球各大科技巨头纷纷进入人工智能领域,催生 ...

  8. python读取npy文件的列表_Python,NPY文件,pk3,Python3,读取,h5pklnpznpy,格式,的

    读取h5格式的文件 import numpy as np import pandas as pd data=pd.read_hdf('METR.h5') print(data) 读取pkl格式的文件 ...

  9. 一文读懂元数据管理!

    原文:一文读懂元数据管理! - 知乎 数字化时代,企业需要知道他们拥有什么数据,数据在哪里.由谁负责,数据中的值意味着什么,数据的生命周期是什么,哪些数据安全性和隐私性需要保护,以及谁使用了数据,用于 ...

最新文章

  1. 悬赏百万美金,检测Deepfake假视频,数据集有470G:很久不见这么壕的比赛
  2. 创业团队如何与兼职做饭的阿姨结算工资比较好?
  3. 知也atitit.解决struts2 SpringObjectFactory.getClassInstance NullPointerException  v2 q31无涯 - I...
  4. hdu2844 Coins -----多重背包+二进制优化
  5. libsvm 参数以及计算测试点相似度
  6. vue实现播放rtmp直播视频流
  7. BehaviorTree + Groot 在ros中的运用
  8. 安装教程_Mac Adobe CC 2020 安装教程
  9. java中用length求二维数组的长度
  10. VIT attention实现(paddle2.2)
  11. 我的世界启动器制作教程
  12. hidapi在linux下编译,HIDAPI
  13. nginx开启日志和配置日志文件路径
  14. 为什么 MySQL 执行完 Delete 操作之后,空间没有释放?
  15. php 可以编辑treegrid,浅谈EasyUI中编辑treegrid的方法_jquery
  16. jmeter设置中文
  17. RPATH $ORIGIN LD_LIBRARY_PATH和可移植 linux 二进制文件的描述
  18. [stm32] Start Tour-利用外部中断控制LED亮灭
  19. Mac OS版本如何重置mysql密码
  20. 根据ttf文件 获取汉字点阵数据

热门文章

  1. [Python 多线程] 详解daemon属性值None,False,True的区别
  2. 28种运动健身摄影调色lr预设
  3. 谷歌android续航,高端Android智能手机电池续航能力排行榜
  4. linux下图形界面登陆器
  5. OpenGL学习笔记:(三)异或操作-橡皮条程序
  6. struts spring hibernate 配置
  7. vs2013版MFC按钮为灰色
  8. Microsoft Windows恶意软件删除工具
  9. Android OpenGl Es 学习(二):定义顶点和着色器
  10. 基于图结构实现地铁乘坐线路查询