python-3.x - 如何在 Python 中使用 Katz 索引找到一对顶点之间的相似性?
问题描述
我正在尝试使用 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 中不可用。另一种方法是使用公式计算此分数。详细请参考这篇论文:https ://appliednetsci.springeropen.com/articles/10.1007/s41109-018-0080-5
示例代码如下:
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
推荐阅读
- java - hibernate 是否处理 Spring 注释?
- java - 为什么这个特殊的程序打印我五个?
- c++ - 如何在 Windows 上使用 Clang 静态分析器?
- powershell - 使用 if 向命令添加可选参数
- unit-testing - 测试使用插槽的苗条组件
- elasticsearch - ElasticSearch 按数组字段过滤 不包含某些值
- c++ - 任何从 c++filt demangled 输出中获取更多信息的方式
- elasticsearch - 如何将布尔查询与间隔查询或任何其他查询结合起来
- java - Swagger Codegen (Springboot) 生成的代码的“任何”类没有反序列化
- mfc - 午餐远程应用程序 C++ MFC