使用networkx以矩阵形式存储链路预测分数
我试图通过以下方式以矩阵形式存储networkx的adamic adar链路预测分数使用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
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
边,这种方法非常慢。这是他们更快的方法 分析工作
您可以使用pythoncProfiler
来观察工作中的瓶颈:
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()
的核心算法。因此,您可能需要自己实现一个更高效的算法版本