dw做网站首页代码,263个人邮箱注册,萧江网站建设,商业软文图神经网络实战#xff08;5#xff09;——常用图数据集 0. 前言0. 图数据集介绍2. Cora 数据集3. Facebook Page-Page 数据集小结系列链接 0. 前言
图数据集往往比单纯的连接集合更丰富#xff0c;节点和边也可以具有表示分数、颜色、单词等的特征。在输入数据中包含这些… 图神经网络实战5——常用图数据集 0. 前言0. 图数据集介绍2. Cora 数据集3. Facebook Page-Page 数据集小结系列链接 0. 前言
图数据集往往比单纯的连接集合更丰富节点和边也可以具有表示分数、颜色、单词等的特征。在输入数据中包含这些附加信息对于生成最佳嵌入至关重要。而由于节点和边的特征与表格(非图)数据集具有相同的结构意味着神经网络等经典技术可以应用于这些数据。在本节中我们将介绍两个常见图数据集Cora 和 Facebook Page-Page。
0. 图数据集介绍
在图神经网络 (Graph Neural Networks, GNN) 中所使用的图数据集通常比 Zachary’s Karate Club 数据集更丰富它们有更多的节点、更多的边并且包含节点特征。在本节中我们将对常用的两个数据集进行介绍以便让我们对这些图有一个全面的了解并了解如何用 PyTorch Geometric 处理它们
Cora 数据集Facebook Page-Page 数据集
2. Cora 数据集
Cora 数据集由 Sen 等人于 2008 年提出是科学文献中最流行的节点分类数据集。它是一个由 2708 篇出版物组成的网络其中每个连接都是一个引用。每篇出版物都被描述为一个由 1,433 个唯一单词组成的二进制向量其中 0 和 1 分别表示没有或存在相应的单词。这种表示法在自然语言处理中也被称为二进制词袋 (bag of words)我们的目标是将每个节点分类到七个类别之一。 无论数据类型如何可视化始终是我们了解所面临问题的重要步骤。然而当图过大时使用 networkx 等 Python 可视化库将无法进行可视化因此研究人员为图数据可视化开发了专用工具我们将使用两个流行的工具yEd Live 和 Gephi 进行图数据集可视化。 下图是用 yEd Live 绘制的 Cora 数据集图。可以看到橙色为论文对应的节点绿色为论文之间的连接。一些论文之间的相互连接的非常紧密以至于形成了论文簇这些簇比连接不紧密的节点更容易分类。 接下来导入 Cora 数据集并用 PyTorch Geometric 库分析其主要特征PyTorch Geometric 库有一个专门的类用于下载数据集并返回相关的数据结构。PyTorch Geometric 是深度学习框架 PyTorch 的扩展库用于简化图神经网络的实现。PyTorch Geometric 的安装与其它 Python 第三方库一样只需在 shell 中使用 pip 命令即可
pip installl torch_geometric(1) 从 PyTorch Geometric 中导入 Planetoid 类
import torch
from torch_geometric.datasets import Planetoid(2) 使用 Planetoid 类下载数据集
dataset Planetoid(root., nameCora)(3) Cora 只有一个图将其存储在 data 变量中
data dataset[0](4) 打印数据集的相关信息
print(fDataset: {dataset})
print(---------------)
print(fNumber of graphs: {len(dataset)})
print(fNumber of nodes: {data.x.shape[0]})
print(fNumber of features: {dataset.num_features})
print(fNumber of classes: {dataset.num_classes})(5) 输出结果如下所示
Dataset: Cora()
---------------
Number of graphs: 1
Number of nodes: 2708
Number of features: 1433
Number of classes: 7(6) 通过 PyTorch Geometric 的专用函数还可以获得更多详细信息
# Print information about the graph
print(f\nGraph:)
print(------)
print(fEdges are directed: {data.is_directed()})
print(fGraph has isolated nodes: {data.has_isolated_nodes()})
print(fGraph has loops: {data.has_self_loops()})(7) 输出结果如下所示
Graph:
------
Edges are directed: False
Graph has isolated nodes: False
Graph has loops: False第一个输出结果输出了节点数、特征和类别的信息第二个输出则提供了关于图本身的更多信息边是无向的每个节点都有邻居而且图不存在自循环。我们也可以使用 PyTorch Geometric 的 utils 函数测试其他属性。 了解了 Cora 数据集后我们继续介绍一个更能代表真实世界社交网络规模的数据集Facebook Page-Page 数据集。
3. Facebook Page-Page 数据集
该数据集由 Rozemberczki 等人于 2019 年提出它是在 2017 年 11 月使用 Facebook Graph API 创建的。这个数据集包含 22470 个节点其中每个节点都代表一个 Facebook 页面。当页面之间存在互赞行为时它们就会被连接起来节点特征( 128 维向量)根据这些页面所有者撰写的文字描述创建。我们的目标是将每个节点分为四种类别之一oliticians、companies、television shows 和 governmental organizations。 Facebook Page-Page 数据集与 Cora 数据集类似是一个具有节点分类任务的社交网络。但与 Cora 相比有如下区别
节点数量更多 (Cora为 2,708 个节点而 Facebook Page-Page 包含 22,470 个)节点特征的维度较小 (Cora 节点特征维度为 1,433而 Facebook Page-Page 为 128)目标是将每个节点分为 4 个类别而不是 7 个类别(类别较少更容易分类)
下图是使用 Gephi 对数据集进行的可视化的效果。为了提高性能我们忽略了连接数少的节点。其余节点的大小取决于它们的连接数而它们的颜色则表示它们所属的类别。 可以按照与 Cora 相同的方法导入 Facebook Page-Page 数据集。
(1) 从 PyTorch Geometric 中导入 FacebookPagePage 类
from torch_geometric.datasets import FacebookPagePage(2) 使用 FacebookPagePage 类下载数据集
dataset FacebookPagePage(root., nameFacebookPagePage)(3) 将图存储在 data 变量中
data dataset[0](4) 打印数据集的相关信息
print(fDataset: {dataset})
print(-----------------------)
print(fNumber of graphs: {len(dataset)})
print(fNumber of nodes: {data.x.shape[0]})
print(fNumber of features: {dataset.num_features})
print(fNumber of classes: {dataset.num_classes})输出结果如下所示
Dataset: FacebookPagePage()
-----------------------
Number of graphs: 1
Number of nodes: 22470
Number of features: 128
Number of classes: 4(5) 通过 PyTorch Geometric 的专用函数获得更多详细信息
print(f\nGraph:)
print(------)
print(fEdges are directed: {data.is_directed()})
print(fGraph has isolated nodes: {data.has_isolated_nodes()})
print(fGraph has loops: {data.has_self_loops()})输出结果如下所示
Graph:
------
Edges are directed: False
Graph has isolated nodes: False
Graph has loops: True代码 (4) 中的输出结果确认了我们在数据集描述中看到的节点和类别的数量(5) 中的输出结果表明这个图中有自循环——某些页面连接到它们自身。
(6) 与 Cora 不同Facebook Page-Page 默认情况下没有训练、评估和测试掩码我们可以使用 range() 函数创建掩码
data.train_mask range(18000)
data.val_mask range(18001, 20000)
data.test_mask range(20001, 22470)(7) PyTorch Geometric 还提供了一个转换函数可以在加载数据集时计算随机掩码
import torch_geometric.transforms as T小结
Cora 和 Facebook Page-Page 是图神经网络领域中经常使用的两个基准图数据集通常用来比较不同模型的性能。在本节中介绍了如何使用 PyTorch Geometric 库提供的数据集类加载 Cora 和 Facebook Page-Page 数据集并探索了两个数据集的主要特征。
系列链接
图神经网络实战1——图神经网络(Graph Neural Networks, GNN)基础 图神经网络实战2——图论基础 图神经网络实战3——基于DeepWalk创建节点表示 图神经网络实战4——基于Node2Vec改进嵌入质量