【图神经网络基础】认识数据集--同质数据集CiteSeer

        CiteSeer 数据集是另一个广泛用于图神经网络(GNN)研究的基准数据集,特别是用于节点分类任务。以下是关于 CiteSeer 数据集的详细介绍:

数据集概述

        CiteSeer 数据集由学术论文组成,每篇论文被视为一个节点,引用关系被视为边。该数据集包含六个类别的论文,每个节点都带有特征向量和标签。数据集的主要任务是根据节点的特征和图结构对节点进行分类。

数据集组成

  • 节点(Nodes)

    • 数量:3,327
    • 代表:每个节点代表一篇学术论文。
    • 属性:每个节点有一个3703维的二进制特征向量,表示该论文的内容。特征向量采用词袋模型(Bag of Words)表示,即每个特征维度对应一个词汇表中的词,值为1表示该词在论文中出现,为0表示未出现。
  • 边(Edges)

    • 数量:4,732
    • 代表:每条边表示一篇论文对另一篇论文的引用关系。
    • 无向图:边是无向的,即引用关系被视为对称的。
  • 标签(Labels)

    • 类别数:6
    • 类别标签:每个节点(论文)属于一个类别,共有六类:
      1. Agents
      2. Artificial Intelligence
      3. Database
      4. Information Retrieval
      5. Machine Learning
      6. Human-Computer Interaction

数据集统计

  • 节点数:3,327
  • 边数:4,732
  • 特征维度:3,703
  • 类别数:6

数据表示

CiteSeer 数据集通常以图的形式表示,其中包含以下内容:

  1. 邻接矩阵(Adjacency Matrix)

    • 表示:图的结构,其中 A[i,j]=1 表示节点 i 和节点 j 之间有边,A[i,j]=0 表示无边。
  2. 特征矩阵(Feature Matrix)

    • 表示:节点特征,其中每行对应一个节点的特征向量。
  3. 标签矩阵(Label Matrix)

    • 表示:每个节点的类别标签。

使用场景

CiteSeer 数据集主要用于以下研究场景:

  1. 节点分类(Node Classification)

    • 目标:基于节点的特征和图结构,预测节点的类别标签。
    • 常用模型:GCN(Graph Convolutional Network)、GAT(Graph Attention Network)等。
  2. 图嵌入(Graph Embedding)

    • 将节点嵌入到低维向量空间中,以便在嵌入空间中进行分类、聚类等任务。
  3. 图神经网络模型评估(Evaluation of GNN Models)

    • 评估各种 GNN 模型的性能。

常用处理步骤

  1. 读取特征矩阵、邻接矩阵和标签
  2. 对特征进行标准化处理
  3. 划分训练集、验证集和测试集
  4. 构建 GNN 模型
  5. 使用训练集进行模型训练,并在验证集上调参
  6. 在测试集上评估模型性能
  7. 使用准确率(Accuracy)、精确率(Precision)、召回率(Recall)等指标进行评估

示例代码

以下是一个使用 PyTorch Geometric 进行节点分类的简单示例,使用 CiteSeer 数据集:

import torch
import torch.nn.functional as F
from torch_geometric.datasets import Planetoid
import torch_geometric.transforms as T
from torch_geometric.nn import GCNConv

# 加载 CiteSeer 数据集
dataset = Planetoid(root='/tmp/CiteSeer', name='CiteSeer', transform=T.NormalizeFeatures())

class GCN(torch.nn.Module):
    def __init__(self):
        super(GCN, self).__init__()
        self.conv1 = GCNConv(dataset.num_features, 16)
        self.conv2 = GCNConv(16, dataset.num_classes)

    def forward(self, data):
        x, edge_index = data.x, data.edge_index
        x = self.conv1(x, edge_index)
        x = F.relu(x)
        x = F.dropout(x, training=self.training)
        x = self.conv2(x, edge_index)
        return F.log_softmax(x, dim=1)

# 初始化模型、优化器和损失函数
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
model = GCN().to(device)
data = dataset[0].to(device)
optimizer = torch.optim.Adam(model.parameters(), lr=0.01, weight_decay=5e-4)

# 训练模型
def train():
    model.train()
    optimizer.zero_grad()
    out = model(data)
    loss = F.nll_loss(out[data.train_mask], data.y[data.train_mask])
    loss.backward()
    optimizer.step()

# 测试模型
def test():
    model.eval()
    _, pred = model(data).max(dim=1)
    correct = int(pred[data.test_mask].eq(data.y[data.test_mask]).sum().item())
    acc = correct / int(data.test_mask.sum())
    return acc

for epoch in range(200):
    train()
    acc = test()
    print(f'Epoch {epoch}: Accuracy: {acc:.4f}')

        这个示例展示了如何使用 PyTorch Geometric 加载 CiteSeer 数据集,并训练一个简单的图卷积网络(GCN)进行节点分类。

参考文献

        CiteSeer 数据集广泛用于各种图神经网络的研究和评估,是图数据分析领域的重要资源。它最早由 Giles, Bollacker 和 Lawrence 在他们的论文 "CiteSeer: An Automatic Citation Indexing System" 中提出,并且现在被广泛应用于图神经网络的研究中。

 完结撒花

        回家吧,回到最初的美好。

  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值