ra_index_soundarajan_hopcroft#

计算ebunch中所有节点对的资源分配指数,使用社区信息。

对于两个节点:math:u`和:math:`v,此函数计算资源分配指数,仅考虑属于:math:`u`和:math:`v`相同社区的共同邻居。数学上,

\[\sum_{w \in \Gamma(u) \cap \Gamma(v)} \frac{f(w)}{|\Gamma(w)|}\]

其中:math:f(w)`等于1如果:math:`w`属于与:math:`u`和:math:`v`相同的社区,否则为0,:math:Gamma(u)`表示:math:`u`的邻居集合。

Parameters:
G

一个NetworkX无向图。

ebunch节点对的可迭代对象,可选(默认 = None)

将为可迭代对象中给定的每对节点计算得分。节点对必须以2元组(u, v)的形式给出,其中u和v是图中的节点。如果ebunch为None,则将使用图中所有不存在的边。 默认值:None。

community字符串,可选(默认 = ‘community’)

包含社区信息的节点属性名称。G[u][community]标识u所属的社区。每个节点最多属于一个社区。默认值:’community’。

Returns:
piter迭代器

一个形式为(u, v, p)的3元组迭代器,其中(u, v)是一对节点,p是它们的得分。

Raises:
NetworkXNotImplemented

如果 GDiGraphMultigraphMultiDiGraph

NetworkXAlgorithmError

如果 ebunchG (如果 ebunchNone )中的节点没有社区信息。

NodeNotFound

如果 ebunch 中有不在 G 中的节点。

References

[1]

Sucheta Soundarajan和John Hopcroft。 使用社区信息提高链接预测方法的精确度。 在第21届国际万维网会议(WWW ‘12 Companion)上发表。ACM, 纽约, NY, USA, 607-608。 http://doi.acm.org/10.1145/2187980.2188150

Examples

>>> G = nx.Graph()
>>> G.add_edges_from([(0, 1), (0, 2), (1, 3), (2, 3)])
>>> G.nodes[0]["community"] = 0
>>> G.nodes[1]["community"] = 0
>>> G.nodes[2]["community"] = 1
>>> G.nodes[3]["community"] = 0
>>> preds = nx.ra_index_soundarajan_hopcroft(G, [(0, 3)])
>>> for u, v, p in preds:
...     print(f"({u}, {v}) -> {p:.8f}")
(0, 3) -> 0.50000000