Python 3.x 如何在Python中使用Katz索引查找顶点对之间的相似性?
我正在尝试使用Katz索引查找节点对之间的相似性分数。 例如,如果我有edge(V1,V2),他们的katz相似性分数是多少?目前我已尝试使用networkx函数,如下所示:Python 3.x 如何在Python中使用Katz索引查找顶点对之间的相似性?,python-3.x,networkx,Python 3.x,Networkx,我正在尝试使用Katz索引查找节点对之间的相似性分数。 例如,如果我有edge(V1,V2),他们的katz相似性分数是多少?目前我已尝试使用networkx函数,如下所示: import networkx as mx G=mx.karate_club_graph() katz =mx.katz.katz_centrality(G. alpha=0.01, beta=1) 但我得到了每个节点的中心性。如何为每对节点获得相同的值?提前感谢此功能在networkx中不可用。另一种方法是使用公式计
import networkx as mx
G=mx.karate_club_graph()
katz =mx.katz.katz_centrality(G. alpha=0.01, beta=1)
但我得到了每个节点的中心性。如何为每对节点获得相同的值?提前感谢此功能在networkx中不可用。另一种方法是使用公式计算该分数。有关详细信息,请参阅本文件: 示例代码如下所示:
import networkx as nx
import numpy as np
from numpy.linalg import inv
G = nx.karate_club_graph()
#Calculate highest eigenvector
L = nx.normalized_laplacian_matrix(G)
e = np.linalg.eigvals(L.A)
print("Largest eigenvalue:", max(e))
beta = 1/max(e)
I = np.identity(len(G.nodes)) #create identity matrix
#Katz score
inv(I - nx.to_numpy_array(G)*beta) - I