preprocess.py代码解读
一、处理流程
if __name__ == "__main__":
①打开配置文件config.yaml
②输出数据集中节点信息(二维数组,每行代表一条边的起点、终点索引值)与边总数,read_graph
③ 获取相关的配置信息(cuda设备,node2vec参数信息)
④创建node2vec模型对象
创建数据加载器:用于批量加载数据进行训练
创建优化器,设置学习率l=0.01
训练Node2vec模型,设定为100轮
⑤保存由Node2vec模型推断出的节点嵌入表示,得到它们的节点特征
/data/" + dataset + "/node_features.npy"
⑥数据预处理--将原始的轨迹数据和时间信息进行处理和简化,然后保存为可供后续使用的数据集文件。
读取地图匹配结果文件 trajfile 和原始坐标时间戳文件 timefile
将轨迹采样点编号信息和时间信息转换为整数类型的数组
对轨迹进行分段简化,将每个轨迹分割成长度为 kseg 的小段,并计算每段的平均坐标,得到简化后的轨迹。 【引用Traj2SimVec中轨迹简化方法】
对数据进行洗牌,打乱数据的顺序,并截取前 50000 个数据作为数据集
将处理后的轨迹数据、采样点编号信息、时间信息和简化后的轨迹数据保存到指定的文件中。shuffle_coor_file、shuffle_node_file、shuffle_time_file、shuffle_kseg_file
⑦创建Date2vec模型对象
加载时间信息【时间戳序列类型】
将时间戳序列转换为其对应的向量表示,用于后续的时间序列数据处理或建模任务中
保存时间戳向量表示信息到指定文件。shuffle_d2vec_file.npy
二、重点函数解读
1. prepare_dataset
2. d2vec(timelist)
【
1.yaml包提供了一种简洁易读的方式来序列化和反序列化Python对象,使得数据的存储和传输更加方便。它可以将Python对象序列化为YAML格式的文本,也可以将YAML格式的文本反序列化为Python对象,从而实现数据的转换和处理。常用于配置文件、数据交换、和数据序列化等场景。
2.yaml.safe_load()函数用于安全地加载(解析)YAML(YAML Ain't Markup Language)格式的数据。它可以将YAML格式的文本转换为相应的Python数据结构,如字典、列表等,而且能够防止执行潜在的恶意代码。这对于从不受信任的源加载YAML数据时非常有用,可以降低因执行恶意代码而导致的安全风险。
3.edge_index = torch.LongTensor(edge_index).t().contiguous().to(device),
1)torch.LongTensor(edge_index): 将 edge_index 转换为 PyTorch 的长整型张量(LongTensor)。
2).t(): 对转换后的张量进行转置操作。
3).contiguous(): 使张量在内存中连续存储,以便后续的操作。
4).to(device): 将张量移动到指定的设备(如 GPU 或 CPU)上进行计算
4.如果将 sparse 参数设置为 True,那么对于权重矩阵的梯度计算将会采用稀疏的方式。稀疏梯度意味着只有非零元素的梯度才会被计算和存储,这对于大型的权重矩阵而言可以节省内存和计算资源。相反,如果 sparse 参数设置为 False,那么所有元素的梯度都将被计算和存储,这可能会导致内存消耗较大。
5.from torch_geometric.utils.num_nodes import maybe_num_nodes 从 torch_geometric 库中导入 maybe_num_nodes 函数。这个函数的作用是检查输入的参数,如果是图数据,则返回图中节点的数量,如果是节点特征矩阵,则返回特征矩阵的形状。这个函数的灵活性使得它可以处理不同类型的输入,并且返回与输入相关的节点数量信息。
6.self.adj = SparseTensor(row=row, col=col, sparse_sizes=(N, N)) 创建了一个稀疏张量(SparseTensor),其中 row 和 col 参数指定了稀疏张量的非零元素的行索引和列索引。参数 sparse_sizes 指定了稀疏张量的大小,即稀疏张量的形状是 (N, N),其中 N 是节点的数量。这种表示方式通常用于表示图的邻接矩阵,其中 (i, j) 处的元素表示节点 i 到节点 j 是否存在边。
】
三、想法与疑惑
1. node2vec模型更换为GTS中的TrajNode2vec。
2.轨迹分段简化后面如何调用,用途是什么,论文没有体现?
3.数据洗牌操作用途是什么?
4. Date2vec模型向量化表示的作用,是否可优化。

浙公网安备 33010602011771号