simrank_similarity#
- simrank_similarity(G, source=None, target=None, importance_factor=0.9, max_iterations=1000, tolerance=0.0001)[源代码]#
返回图中节点的simrank相似性
G
.SimRank是一个相似性度量,它表示“如果两个对象被相似的对象引用,则认为它们相似。” [1].
论文中的伪代码定义是:
def simrank(G, u, v): in_neighbors_u = G.predecessors(u) in_neighbors_v = G.predecessors(v) scale = C / (len(in_neighbors_u) * len(in_neighbors_v)) return scale * sum(simrank(G, w, x) for w, x in product(in_neighbors_u, in_neighbors_v))
在哪里?
G
是图表,u
是源头,v
是目标,而且C
是介于0和1之间的浮点衰减或重要性因子。中定义了用于确定节点相似度的SimRank算法 [2].
- 参数
- G网络X图表
网络X图表
- source结点
如果指定此项,则返回的字典将映射每个节点
v
在图形之间的相似性source
和v
。- target结点
如果两者都有
source
和target
指定的情况下,source
和target
返回。如果target
已指定,但source
不是,则忽略此参数。- importance_factor浮动
间接邻居相对于直接邻居的相对重要性。
- max_iterations整数
最大迭代次数。
- tolerance浮动
用于检查收敛的容错。当该算法的迭代发现没有相似性值的变化超过该值时,该算法停止。
- 返回
- similarity词典或浮点数
如果
source
和target
两者都是None
,则返回词典词典,其中键是节点对,值是节点对的相似度。如果
source
不是None
但是target
这将返回字典映射节点到source
还有那个节点。如果既不
source
也不target
是None
,这将返回给定节点对的相似性值。
工具书类
实例
>>> G = nx.cycle_graph(2) >>> nx.simrank_similarity(G) {0: {0: 1.0, 1: 0.0}, 1: {0: 0.0, 1: 1.0}} >>> nx.simrank_similarity(G, source=0) {0: 1.0, 1: 0.0} >>> nx.simrank_similarity(G, source=0, target=0) 1.0
通过使用图形的节点顺序来确定表示每个节点的行和列,可以将该函数的结果转换为表示SimRank矩阵的NumPy数组。节点的其他排序也是可能的。
>>> import numpy as np >>> sim = nx.simrank_similarity(G) >>> np.array([[sim[u][v] for v in G] for u in G]) array([[1., 0.], [0., 1.]]) >>> sim_1d = nx.simrank_similarity(G, source=0) >>> np.array([sim[0][v] for v in G]) array([1., 0.])