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 在图形之间的相似性 sourcev

target结点

如果两者都有 sourcetarget 指定的情况下, sourcetarget 返回。如果 target 已指定,但 source 不是,则忽略此参数。

importance_factor浮动

间接邻居相对于直接邻居的相对重要性。

max_iterations整数

最大迭代次数。

tolerance浮动

用于检查收敛的容错。当该算法的迭代发现没有相似性值的变化超过该值时,该算法停止。

返回
similarity词典或浮点数

如果 sourcetarget 两者都是 None ,则返回词典词典,其中键是节点对,值是节点对的相似度。

如果 source 不是 None 但是 target 这将返回字典映射节点到 source 还有那个节点。

如果既不 source 也不 targetNone ,这将返回给定节点对的相似性值。

工具书类

1

https://en.wikipedia.org/wiki/SimRank

2

杰赫和威多姆。”Simrank:结构上下文相似性的度量”,见KDD'02:第八届ACM SIGKDD知识发现和数据挖掘国际会议论文集,第538-543页。ACM出版社,2002年。

实例

>>> 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.])