图神经网络实战(5)——常用图数据集

图神经网络实战(5)——常用图数据集

    • 0. 前言
    • 0. 图数据集介绍
    • 2. Cora 数据集
    • 3. Facebook Page-Page 数据集
    • 小结
    • 系列链接

0. 前言

图数据集往往比单纯的连接集合更丰富,节点和边也可以具有表示分数、颜色、单词等的特征。在输入数据中包含这些附加信息对于生成最佳嵌入至关重要。而由于节点和边的特征与表格(非图)数据集具有相同的结构,意味着神经网络等经典技术可以应用于这些数据。在本节中,我们将介绍两个常见图数据集:CoraFacebook 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 个唯一单词组成的二进制向量,其中 01 分别表示没有或存在相应的单词。这种表示法在自然语言处理中也被称为二进制词袋 (bag of words),我们的目标是将每个节点分类到七个类别之一。
无论数据类型如何,可视化始终是我们了解所面临问题的重要步骤。然而,当图过大时,使用 networkxPython 可视化库将无法进行可视化,因此研究人员为图数据可视化开发了专用工具,我们将使用两个流行的工具:yEd Live 和 Gephi 进行图数据集可视化。
下图是用 yEd Live 绘制的 Cora 数据集图。可以看到橙色为论文对应的节点,绿色为论文之间的连接。一些论文之间的相互连接的非常紧密,以至于形成了论文簇,这些簇比连接不紧密的节点更容易分类。

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=".", name="Cora")

(3) Cora 只有一个图,将其存储在 data 变量中:

data = dataset[0]

(4) 打印数据集的相关信息:

print(f'Dataset: {dataset}')
print('---------------')
print(f'Number of graphs: {len(dataset)}')
print(f'Number of nodes: {data.x.shape[0]}')
print(f'Number of features: {dataset.num_features}')
print(f'Number 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(f'Edges are directed: {data.is_directed()}')
print(f'Graph has isolated nodes: {data.has_isolated_nodes()}')
print(f'Graph has loops: {data.has_self_loops()}')

(7) 输出结果如下所示:

Graph:
------
Edges are directed: False
Graph has isolated nodes: False
Graph has loops: False

第一个输出结果输出了节点数、特征和类别的信息,第二个输出则提供了关于图本身的更多信息:边是无向的,每个节点都有邻居,而且图不存在自循环。我们也可以使用 PyTorch Geometricutils 函数测试其他属性。
了解了 Cora 数据集后,我们继续介绍一个更能代表真实世界社交网络规模的数据集,Facebook Page-Page 数据集。

3. Facebook Page-Page 数据集

该数据集由 Rozemberczki 等人于 2019 年提出,它是在 201711 月使用 Facebook Graph API 创建的。这个数据集包含 22470 个节点,其中每个节点都代表一个 Facebook 页面。当页面之间存在互赞行为时,它们就会被连接起来,节点特征( 128 维向量)根据这些页面所有者撰写的文字描述创建。我们的目标是将每个节点分为四种类别之一:oliticianscompaniestelevision showsgovernmental organizations
Facebook Page-Page 数据集与 Cora 数据集类似,是一个具有节点分类任务的社交网络。但与 Cora 相比有如下区别:

  • 节点数量更多 (Cora2,708 个节点,而 Facebook Page-Page 包含 22,470 个)
  • 节点特征的维度较小 (Cora 节点特征维度为 1,433,而 Facebook Page-Page128)
  • 目标是将每个节点分为 4 个类别,而不是 7 个类别(类别较少,更容易分类)

下图是使用 Gephi 对数据集进行的可视化的效果。为了提高性能,我们忽略了连接数少的节点。其余节点的大小取决于它们的连接数,而它们的颜色则表示它们所属的类别。

Facebook Page-Page

可以按照与 Cora 相同的方法导入 Facebook Page-Page 数据集。

(1)PyTorch Geometric 中导入 FacebookPagePage 类:

from torch_geometric.datasets import FacebookPagePage

(2) 使用 FacebookPagePage 类下载数据集:

dataset = FacebookPagePage(root=".", name="FacebookPagePage")

(3) 将图存储在 data 变量中:

data = dataset[0]

(4) 打印数据集的相关信息:

print(f'Dataset: {dataset}')
print('-----------------------')
print(f'Number of graphs: {len(dataset)}')
print(f'Number of nodes: {data.x.shape[0]}')
print(f'Number of features: {dataset.num_features}')
print(f'Number 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(f'Edges are directed: {data.is_directed()}')
print(f'Graph has isolated nodes: {data.has_isolated_nodes()}')
print(f'Graph 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

小结

CoraFacebook Page-Page 是图神经网络领域中经常使用的两个基准图数据集,通常用来比较不同模型的性能。在本节中,介绍了如何使用 PyTorch Geometric 库提供的数据集类加载 CoraFacebook Page-Page 数据集,并探索了两个数据集的主要特征。

系列链接

图神经网络实战(1)——图神经网络(Graph Neural Networks, GNN)基础
图神经网络实战(2)——图论基础
图神经网络实战(3)——基于DeepWalk创建节点表示
图神经网络实战(4)——基于Node2Vec改进嵌入质量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/757827.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python实现2024春晚刘谦魔术

视频回顾 “刘谦老师24年春晚魔术 整理下步骤如下: 1.13张扑克牌弄乱抽4张 2.4张牌对折 撕开 3.名字几个字 从上到下放几张下去、 4.拿起最上面3张 插进剩下卡片的中间 5.最上面的一张藏起来 6.南方人/北方人/不确定 从上面拿起一张/两张/3张 插进剩下的牌中间 7.男…

Golang 开发实战day04 - Standard Library

Golang 开发实战day04 - Standard Library 接下来开始我们第四天学习,Go语言标准库提供了丰富的功能,可以帮助开发者快速完成各种任务。 golang就像其他语言一样,附带了一些非常轻量级的函数和特性,都是开箱即用的,这里…

LeetCode 热题100 回溯专题解析

LeetCode 热题100 回溯专题解析 回溯算法是一种通过探索所有可能的候选解来找出所有解的算法。在遇到不满足约束条件的情况下,回溯算法会返回上一步,尝试其他可能的候选解。在 LeetCode 热题100 中,回溯算法广泛应用于排列组合问题。本文将深…

Linux 管道

目录 一、认识管道 二、匿名管道 pipe函数 用法: pipefd: 匿名管道通信: 三、命名管道 概念: 创建: 特性: 用途: 四、命名管道和匿名管道的区别 命名: 持久性:…

改进YOLOv8注意力系列六:结合SEAttention轻量通道注意力、ShuffleAttention重排特征注意力模块、SimAM无参数化注意力

改进YOLOv8注意力系列五:结合ParNetAttention注意力、高效的金字塔切分注意力模块PSA、跨领域基于多层感知器(MLP)S2Attention注意力 代码SEAttention轻量通道注意力ShuffleAttention重排特征注意力模块SimAM无参数化注意力加入方法各种yaml加入结构本文提供了改进 YOLOv8注…

大模型下载报错:aria2c/git-lfs is not installed, Please install it first.

报错信息 aria2c is not installed, Please install it first. git-lfs is not installed, Please install it first.解决方法 apt install aria2c同理 apt install git-lfs其他问题 如果是权限问题加sudo sudo apt install aria2c和 sudo apt install git-lfs

【PyQt】17-日历控件

文章目录 前言一、代码二、运行结果总结 前言 固定格式的表述 日期的获取 一、代码 #Author :susocool #Creattime:2024/3/19 #FileName:40-日历控件 #Description: 日历控件的展示 import sys from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQ…

[论文笔记] Open-Sora 4、sora复现训练过程 (新repo)

sudo -H pip install --upgrade youtube-dl -i https://pypi.doubanio.com/simple/ 一、概况 OpenAI 的 Sora 在生成一分钟高质量视频方面非常出色。然而,它几乎没有透露任何有关其细节的信息。为了让AI更加“开放”,致力于打造Sora的开源版本。本报告描述了colossal-ai首次…

【云呐】医院固定资产管理系统有哪些

科学技术的进步已经渗透到各个领域,医疗行业也是如此。伴随着医疗信息化的实施,医院固定资产管理系统的应用日益广泛。那医院固定资产管理系统的作用是什么呢?  医院固定资产管理系统的核心功能是高效管理医院的固定资产。这包括对整个过程…

解决jenkins运行磁盘满的问题

参考:https://blog.csdn.net/ouyang_peng/article/details/79225993 分配磁盘空间相关操作: https://cloud.tencent.com/developer/article/2230624 登录jenkins相对应的服务或容器中查看磁盘情况: df -h在102挂载服务器上看到是这两个文件…

关于自己Nginx的使用(ant design pro 部署)

一 原因 工作需要部署 ant design pro 框架开发的前端程序,并且需要有用到代理。就选择了nginx部署。 二 使用nginx部署 ant design pro 框架程序 1. 前端项目打包 (1)打包命令:npm run build 或者 yarn bulid &#…

Java安全技术及代码审计技巧

概述 Java安全编码和代码审计是确保Java应用程序安全性的重要环节。本文旨在介绍Java中常见的Web漏洞、安全编码示例以及一些常见漏洞函数,并提供一个自动化查找危险函数的Python脚本。 1. XML外部实体 (XXE) 漏洞 介绍 XML文档结构包括XML声明、DTD文档类型定义&…

淘宝店铺如何从1688一键铺货?官方授权API接口,可满足多样化上货需求

那么新手卖家如何将1688的源头厂货一键铺货到淘宝店铺呢?下面我教大家几招: 1、通过淘宝复制一键复制上货 淘宝API接口采集 taobao.item_get 公共参数 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretStr…

PVE中 非集群环境中迁移LXC到另一台主机

需求:要将PVE 中LXC 容器迁移到 另一台不同网段的PVE中(诸如模板机之类); 思路:源主机上备份LXC,在新主机上还原LXC 主机; 步骤: 1. 在源主机 备份LXC 根据自身的需求选择压缩方式…

【工具】vscode终端打不开

问题 1The terminal process failed to launch: A native exception occurred during launch (forkpty(3) failed.). 参考方案 下面参考链接是针对windows系统上vscode 出现的相同问题的解答 参考链接:https://blog.csdn.net/weixin_40921421/article/details/122…

强强联合!亚信科技、用友网络共同助力西南某国企集团数智化升级

近日,亚信科技(中国)有限公司(简称“亚信科技”)与用友网络科技股份有限公司(简称“用友网络”)携手推出的“U8CAntDB联合产品”正式落地西南某国企集团,助力该集团搭建统一的财务管…

LeetCode 35. 搜索插入位置 java题解

题目 二分查找 class Solution {public int searchInsert(int[] nums, int target) {int lennums.length;if(nums[len-1]<target)return len;if(nums[0]>target)return 0;//找到第一个不大于它的位置&#xff0c;插在它后面int left0,rightlen-1;while(left<right){i…

Linux Deepin系统安装x11vnc+cpolar实现Windows系统电脑远程其桌面

文章目录 1. 安装x11vnc2. 本地远程连接测试3. Deepin安装Cpolar4. 配置公网远程地址5. 公网远程连接Deepin桌面6. 固定连接公网地址7. 固定公网地址连接测试 x11vnc是一种在Linux系统中实现远程桌面控制的工具&#xff0c;它的原理是通过X Window系统的协议来实现远程桌面的展…

MySQL中replace into详解、批量更新、不存在插入存在则更新、replace into的坑

文章目录 一、replace into原理二、replace into的三种形式三、replace into 使用案例3.1、replace into values3.1.1、只有主键且主键冲突3.1.2、有主键有唯一索引且主键冲突3.1.3、有主键有唯一索引且唯一索引冲突(有坑)3.1.4、有主键有唯一索引且与一条主键冲突与另一条唯一…

undefined symbol: _ZN4os

webrtc.node: undefined symbol: _ZN3rtc10DIGEST_MD5E_zn3 cc-CSDN博客 undefined symbol 问题解决记录(二)-CSDN博客 注意&#xff1a;如果 ldd -r test 一个进程&#xff0c;显示缺少 符号&#xff0c;那么 也有可能不是该进程缺少&#xff0c;而是它调用的so库缺少该…