使用networkx以矩阵形式存储链路预测分数

使用networkx以矩阵形式存储链路预测分数,networkx,adjacency-matrix,Networkx,Adjacency Matrix,我试图通过以下方式以矩阵形式存储networkx的adamic adar链路预测分数 G = nx.Graph() G.add_edges_from([('a','b'),('b','c'),('a','d'),('c','d'),('b','d')]) preds = nx.adamic_adar_index(G, ebunch = G.edges()) B = nx.Graph() for u,v,p in preds: B.add_edge(u,v,weight=p) Adj_m

我试图通过以下方式以矩阵形式存储networkx的adamic adar链路预测分数

G = nx.Graph()
G.add_edges_from([('a','b'),('b','c'),('a','d'),('c','d'),('b','d')])
preds = nx.adamic_adar_index(G, ebunch = G.edges())

B = nx.Graph()
for u,v,p in preds:
   B.add_edge(u,v,weight=p)

Adj_mat = nx.to_scipy_sparse_matrix(B)
但是对于
2858219
边,这种方法非常慢。这是他们更快的方法

分析工作 您可以使用python
cProfiler
来观察工作中的瓶颈:

cProfile.run('''
G = nx.complete_graph(100)
preds = nx.adamic_adar_index(G, ebunch = G.edges())

B = nx.Graph()
for u,v,p in preds:
   B.add_edge(u,v,weight=p)

Adj_mat = nx.to_scipy_sparse_matrix(B)
''')
分析 从该分析中,您可以观察到很大一部分时间花在
link\u prediction.py:199(predict)
上,这是
adamic\u adar\u index()
的核心算法。因此,您可能需要自己实现一个更高效的算法版本