本科毕业设计
之前做过一点知识图谱相关的工作,了解过一些图相关的知识,可惜之前没有做好记录,只是做了相关内容,具体细节已经忘掉了。
正好毕业设计也是这方面相关的,涉及图神经网络和数据处理方面的,不过嘛,毕业设计的水分还是很足的,大部分是工程相关的,因此也是主要来写怎么处理工程问题,而不是相关算法问题,算法主要是通过复现老师的代码。
神经网络相关
数据集
一共有两类数据集,分别是基础数据集和 reddit 数据集。下面分别介绍这两种数据集。
基础数据集
所谓基础数据集指的是 torch_geometric 中自带的数据集,本次只使用了两种类别,其他内置数据集就没有认真调查了,这两类分别是 Planetoid 和 Amazon。
Planetoid 的名称是来自论文 Revisiting Semi-Supervised Learning with Graph Embeddings. Zhilin Yang, William W. Cohen, Ruslan Salakhutdinov. ICML 2016.
Amazon Amazon Co-purchase Dataset(亚马逊共购数据集)是一组基于Amazon网站“Customers Who Bought This Item Also Bought”功能的开放图数据集,用于研究产品间的共购关系和消费者行为模式。
torch_geometric 中返回的数据格式为,以 cora 为例子,Planetoid 和 Amazon 返回格式基本相同。
1 | Data(x=[2708, 1433], edge_index=[2, 10556], y=[2708], train_mask=[2708], val_mask=[2708], test_mask=[2708]) |
这里面的相关含义:
- x=[2708, 1433]:(节点特征矩阵)节点数;每个节点的维度特征
- edge_index=[2, 10556]:(边索引矩阵,邻接矩阵)起点;终点;(方向,无向图就没有)
- y=[2708]:(节点标签):节点数
- train_mask=[2708]:(训练集掩码)
- val_mask=[2708]:(验证集掩码)
- test_mask=[2708]:(测试集掩码)
reddit 数据集主要的格式为
1 | {"directed": false, "graph": {}, "nodes": [{"test": false, "id": "2hgylt", "val": false}], "links":[]} |
数据处理
- 处理为 COO 格式,然后直接手动计算两层多阶邻域特征,加速运算(本质是一阶切比雪夫近似),我自己也没看的特别懂,具体可以参考知乎文章
1 | def get_adj_feats(target_data): |
COO 格式主要是通过 (row,col,data)的形式来保存,但是是通过三个数据分别来进行保存的
工程设计相关
Neo4j
安装
至于 jdk21 的安装,可以直接使用 open jdk,ubuntu 直接安装就行
1 | sudo apt install openjdk-21-jre |
关于多版本 jdk 怎么处理,和其他 neo4j 安装的相关内容可以参考这部分安装指南

