Actor 数据集是一个包含了演员及其合作关系的图数据集,主要用于图神经网络(Graph Neural Networks, GNNs)在节点分类等任务中的研究。以下是关于 Actor 数据集的详细介绍:
数据集概述
Actor 数据集包含了多个演员节点,以及演员之间的合作关系。每个节点(演员)都有相应的特征向量和类别标签。这个数据集的主要任务是根据节点特征和图结构对节点进行分类。
数据集组成
-
节点(演员):
- 每个节点代表一个演员。
- 每个节点都有一个特征向量,表示该演员的某些属性或信息。
- 每个节点有一个类别标签,表示该演员所属的类别。
-
边(合作关系):
- 每条边表示两个演员之间的合作关系。
- 边是无向的,即合作关系被视为对称的。
-
特征:
- 每个节点的特征向量是一个数值向量,表示该演员的属性。
-
类别标签:
- 每个节点都有一个类别标签,表示该演员所属的类别。
数据集统计
- 节点数:7600
- 边数:33544
- 特征维度:931(每个节点的特征向量维度)
- 类别数:5
数据表示
Actor 数据集通常以图的形式表示,其中包含以下内容:
- 邻接矩阵(Adjacency Matrix):表示图的结构,其中 A[i,j]=1 表示节点 i 和节点 j 之间有边, A[i,j]=0 表示无边。
- 特征矩阵(Feature Matrix):表示节点特征,其中每行对应一个节点的特征向量。
- 标签矩阵(Label Matrix):表示每个节点的类别标签。
使用场景
Actor 数据集主要用于以下研究场景:
- 节点分类:基于节点的特征和图结构,预测节点的类别标签。
- 图嵌入:将节点嵌入到低维向量空间中,以便在嵌入空间中进行分类、聚类等任务。
- 图神经网络模型评估:评估各种 GNN 模型的性能,如 GCN(Graph Convolutional Network)、GAT(Graph Attention Network)等。
示例代码
以下是一个使用 PyTorch Geometric 进行节点分类的示例,展示了如何加载 Actor 数据集并进行训练和评估:
import torch
import torch.nn.functional as F
from torch_geometric.nn import GCNConv
from torch_geometric.data import Data
# 假设我们已经有 Actor 数据集的特征矩阵、邻接矩阵和标签
# 这里是一些示例数据来模拟 Actor 数据集
features = torch.tensor([
[1, 0, 0, ...], # 节点 1 的特征
[0, 1, 0, ...], # 节点 2 的特征
...
], dtype=torch.float)
edge_index = torch.tensor([
[0, 1], # 边 1
[0, 2], # 边 2
...
], dtype=torch.long).t().contiguous()
labels = torch.tensor([0, 1, 0, ..., 4], dtype=torch.long) # 节点的类别标签
train_mask = torch.tensor([True, True, ..., False], dtype=torch.bool)
test_mask = torch.tensor([False, False, ..., True], dtype=torch.bool)
# 创建数据对象
data = Data(x=features, edge_index=edge_index, y=labels, train_mask=train_mask, test_mask=test_mask)
# 定义 GCN 模型
class GCN(torch.nn.Module):
def __init__(self):
super(GCN, self).__init__()
self.conv1 = GCNConv(features.size(1), 16) # 输入特征维度为特征矩阵的列数,输出维度为16
self.conv2 = GCNConv(16, 5) # 隐藏层维度为16,输出类别数为5
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 = data.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(100):
train()
acc = test()
print(f'Epoch {epoch}: Accuracy: {acc:.4f}')
数据集来源与引用
Actor 数据集通常是从真实的电影数据库或演艺圈数据中构建的,用于研究图数据上的机器学习算法。研究人员可以通过引用相关的研究论文获取更详细的信息和数据集来源。
Actor Benchmark (Node Classification) | Papers With CodeThe current state-of-the-art on Actor is 2-HiGCN. See a full comparison of 50 papers with code.https://paperswithcode.com/sota/node-classification-on-actor torch_geometric.datasets.actor — pytorch_geometric documentationhttps://pytorch-geometric.readthedocs.io/en/latest/_modules/torch_geometric/datasets/actor.html
完结撒花
为什么呢?