【数据集】ACM数据集

ACM(Association for Computing Machinery)数据集是计算机科学领域常用于研究学术论文、作者关系、引文网络、推荐系统、图神经网络(GNN)等任务的数据集之一。该数据集通常包含学术论文、作者、研究领域以及它们之间的关系,并在许多机器学习、数据挖掘和社交网络分析任务中广泛使用。


1. ACM数据集的版本和来源

ACM数据集的版本较多,不同版本的数据来源和内容可能有所不同,常见的版本包括:

  • ACM Citation Network Dataset:由Microsoft Academic Graph(MAG)或DBLP提取的ACM引用网络数据,包含论文及其引用关系。
  • ACM Author-Paper Dataset:用于学术社交网络分析,包含作者、论文及其关系信息。
  • ACM数据集(ACM-DBLP):用于异质图神经网络(Heterogeneous Graph Neural Networks, HGNN)研究,包括论文、作者和研究领域。

2. 数据结构

不同的ACM数据集包含不同的信息,以下是常见的数据组织形式:

(1) 节点类型

ACM数据集通常包含以下几类节点:

  • Paper(论文):包括论文ID、标题、摘要、发表年份、会议等信息。
  • Author(作者):包括作者ID、姓名、单位等信息。
  • Conference/Venue(会议或期刊):论文发表的会议或期刊信息。
  • Field(研究领域):论文所属的计算机科学研究方向。

(2) 边类型(关系)

  • (Author, writes, Paper):作者撰写论文的关系。
  • (Paper, cites, Paper):论文引用其他论文的关系。
  • (Paper, published_in, Conference):论文发表在会议上的关系。
  • (Paper, belongs_to, Field):论文所属的研究领域。

(3) 典型数据格式

ACM数据集通常以CSV、JSON、Graph(图数据格式,如Neo4j、DGL、PyG)存储。常见的数据示例如下:

论文表 (Papers.csv)
PaperID Title Y
### 使用 PyTorch Geometric 处理 ACM 数据集时的数据集划分 在使用 PyTorch Geometric (PyG) 处理 ACM 数据集时,通常建议采用标准的比例来划分训练集、测试集和验证集。常见的做法是按照 60% 训练集、20% 验证集和 20% 测试集的比例进行分割[^1]。 这种划分方式能够确保模型有足够的数据用于学习特征,并且有独立的验证集来进行超参数调整以及防止过拟合。此外,在某些情况下,也可以考虑其他比例,比如 70%-15%-15%,具体取决于实际应用场景的需求和数据量大小[^3]。 对于具体的实现方法,可以利用 `train_test_split` 函数来自定义节点分类任务中的数据集划分: ```python from sklearn.model_selection import train_test_split import torch def get_train_val_test_masks(data, val_ratio=0.2, test_ratio=0.2): num_nodes = data.num_nodes indices = list(range(num_nodes)) # Split into training and temporary set (validation + testing) train_idx, temp_idx = train_test_split(indices, random_state=None, stratify=data.y.cpu().numpy(), test_size=(val_ratio + test_ratio)) # Further split the temporary set into validation and test sets val_idx, test_idx = train_test_split(temp_idx, random_state=None, stratify=data.y[temp_idx].cpu().numpy(), test_size=test_ratio / (val_ratio + test_ratio)) train_mask = torch.zeros((num_nodes,), dtype=torch.bool) val_mask = torch.zeros((num_nodes,), dtype=torch.bool) test_mask = torch.zeros((num_nodes,), dtype=torch.bool) train_mask[train_idx] = True val_mask[val_idx] = True test_mask[test_idx] = True return train_mask, val_mask, test_mask data.train_mask, data.val_mask, data.test_mask = get_train_val_test_masks(data) ``` 此代码片段展示了如何基于给定的 `Data` 对象创建掩码向量以指示哪些节点属于训练集、验证集或测试集。通过这种方式,可以在保持类别分布平衡的同时完成数据集的合理分配。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值