如何向Stellargraph加载的Cora数据集添加新的边?
解答
Stellargraph 内置的StellarGraph图实例默认是不可变的,没有提供类似 NetworkX 中add_edges_from的原地加边方法,你可以通过「转NetworkX加边后再转回StellarGraph」的方式实现需求,完整示例如下:
import stellargraph as sg import networkx as nx # 加载Cora数据集,得到原始StellarGraph对象 dataset = sg.datasets.Cora() G_original, node_labels = dataset.load() # 将StellarGraph转成NetworkX格式 nx_g = G_original.to_networkx() # 定义你要添加的额外边列表,注意节点ID要和原图的节点ID完全匹配 extra_edges = [ (31336, 1061127), (1061127, 1106406) ] # 如果边需要带属性,可使用 [(u, v, {"weight": 1, "type": "extra"})] 格式 nx_g.add_edges_from(extra_edges) # 将加边后的NetworkX图转回StellarGraph格式 # node_features参数指定节点特征在NetworkX中的存储属性名,默认转存时用的是"feature" G_new = sg.StellarGraph.from_networkx(nx_g, node_features="feature")
注意事项
- 额外边的节点ID必须和原图的节点ID格式、取值完全一致,否则NetworkX会自动创建不存在的新节点,这类新节点没有预定义特征,后续图计算/训练时会报错
- 如果添加的边包含自定义属性,转回StellarGraph时可通过
edge_weight_attr、edge_type_attr参数指定对应属性名,完成属性的映射
内容的提问来源于stack exchange,提问作者csperson
相关产品推荐
相关产品推荐

