我需要使用stellargraph向Cora数据集添加一些额外的边。有没有一种方法可以在stellargraph库中向当前数据集添加边?
import stellargraph as sg dataset = sg.datasets.Cora()
例如,在NetworkX中,我们可以使用add_edges_from(edgelist)向现有图添加一些边。
add_edges_from(edgelist)
2w2cym1i1#
我最近遇到了一个类似的场景,来回转换到networkx是不可能的。具体来说,由于StellarGraph应该能够存储比networkx大得多的图形,因此将有一个点无法转换。为了解决这个问题,我使用了the numpy loading capabilities of StellarGraph 1.2.1。使用StellarGraph,您可以将使用edge_arrays()的边数组转储到pandas中,然后将任何所需的边连接到pandas上。由于pandas和StellarGraph都比networkx性能更好,因此它的内存占用更少。下面是一个简短的例子:
networkx
StellarGraph
numpy
edge_arrays()
pandas
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 ) )
hlswsv352#
从0.9版本开始,你不能直接从stellargraph中完成它。你必须使用.to_networkx()将它转换回networkX格式,添加你的边,然后将它转换回stellargraph。
.to_networkx()
from stellargraph import StellarGraph import networkx as nx g = StellarGraph.to_networkx(dataset) g.add_edges_from(edgelist) new_dataset = StellarGraph.from_networkx(g)
2条答案
按热度按时间2w2cym1i1#
我最近遇到了一个类似的场景,来回转换到
networkx
是不可能的。具体来说,由于StellarGraph
应该能够存储比networkx
大得多的图形,因此将有一个点无法转换。为了解决这个问题,我使用了the
numpy
loading capabilities ofStellarGraph
1.2.1。使用
StellarGraph
,您可以将使用edge_arrays()
的边数组转储到pandas
中,然后将任何所需的边连接到pandas
上。由于pandas
和StellarGraph
都比networkx
性能更好,因此它的内存占用更少。下面是一个简短的例子:
hlswsv352#
从0.9版本开始,你不能直接从stellargraph中完成它。你必须使用
.to_networkx()
将它转换回networkX格式,添加你的边,然后将它转换回stellargraph。