如何向stellargraph数据集添加新边



我需要使用stellagraph向Cora数据集添加一些额外的边。有没有一种方法可以在stellagraph库中为当前数据集添加边?

import stellargraph as sg
dataset = sg.datasets.Cora()

例如,在NetworkX中,我们可以使用add_edges_from(edgelist)向现有图添加一些边。

我最近遇到了一个类似的场景,无法来回转换为networkx格式。具体地,由于StellarGraph被认为能够存储比networkx大得多的图,因此将存在转换不可能的点。

为了解决这个问题,我使用了StellarGraph1.2.1的numpy加载功能。

使用StellarGraph,可以将具有edge_arrays()的边数组转储到pandas中,然后将任何所需的边连接到该边上。它在内存方面要轻得多,因为pandasStellarGraph的性能都比networkx好。

下面是一个简短的例子:

import pandas as pd
from stellargraph import IndexedArray, StellarGraph
#### original data / graph
nodes = IndexedArray(index=['a', 'b', 'c', 'd'])
original_edges = pd.DataFrame(
{
'source' : [0, 1, 2, 3, 0],
'target' : [1, 2, 3, 0, 2]
}
)
original_graph = StellarGraph(
nodes, 
original_edges
)
#### new data
new_edges = pd.DataFrame(
{
'source' : [3, 3],
'target' : [1, 2]
}
)
#### new graph
new_graph = StellarGraph(
nodes, 
pd.concat(
[
original_edges,
new_edges
],
ignore_index=True
)
)

自0.9版本以来,您无法直接从stellagraph中执行此操作。您必须使用.to_networkx()将其转换回networkX格式,添加边,然后将其转换回到stellagraph。

from stellargraph import StellarGraph
import networkx as nx
g = StellarGraph.to_networkx(dataset)
g.add_edges_from(edgelist)
new_dataset = StellarGraph.from_networkx(g)

最新更新