图数据集Zachary‘s karate club network详解,包括其在NetworkX、PyG上的获取和应用方式

诸神缄默不语-个人CSDN博文目录

文章目录

  • 1. 原始数据
  • 2. NetworkX中的数据
  • 3. PyG中的数据

1. 原始数据

维基百科:Zachary’s karate club - Wikipedia

原始论文:An Information Flow Model for Conflict and Fission in Small Groups

数据集中只有一张图。
该图描述了一个空手道俱乐部会员的社交关系,以34名会员作为节点,如果两位会员在俱乐部之外仍保持社交关系,则在节点间增加一条边。
每个节点具有一个34维的特征向量,一共有78条边。
在收集数据的过程中,管理人员 John A 和 教练 Mr. Hi(化名)之间产生了冲突,会员们选择了站队,一半会员跟随 Mr. Hi 成立了新俱乐部,剩下一半会员找了新教练或退出了俱乐部。通过收集到的图数据,Zachary 进行了分类,除1名会员外都分类正确。

2. NetworkX中的数据

官方文档:networkx.generators.social.karate_club_graph

无向图。一共有34个节点,78条无向、无权、无特征的边。节点具有club属性,取值为 Mr. Hi 或 Officer。

数据获取代码:G = nx.karate_club_graph()

数据文件来源:UCINET IV Datasets

3. PyG中的数据

官方文档:torch_geometric.datasets.KarateClub
源代码:torch_geometric.datasets.karate — pytorch_geometric 1.7.0 documentation

数据文件来源于NetworkX的karate_club_graph,在其基础上做了修改。应该也是34个节点,78条无向边(edge_index宽为156)。
(官方文档中说是154条边(指无向图边×2的数目),应该是写错了,我已经在GitHub项目的论坛里面提问了,等解答ing)

基于论文 Semi-Supervised Classification with Graph Convolutional Networks,用 modularity-based clustering 给每个节点赋予一个四分类的标签(0 1 2 3)。
聚合训练基于每一类的一个有标签节点(也就是一共有4个真实值节点),真实值节点是train_mask为True对应索引的节点。
每个节点有一个34维的特征(x),是独热编码的形式。
参考源代码,y是通过community的community_louvain计算出来的。然后将每一类的第一个节点作为真实值节点。

获取数据的方式:

from torch_geometric.datasets import KarateClub
dataset = KarateClub()
data = dataset[0]
print(data)

Data(edge_index=[2, 156], train_mask=[34], x=[34, 34], y=[34])

你可能感兴趣的:(人工智能学习笔记,python,GNN,图机器学习,神经网络,karate,club)