within_inter_cluster#

计算ebunch中所有节点对的类内和类间共同邻居的比率。

对于两个节点 uv ,如果一个共同邻居 w 与它们属于同一社区,则 w 被视为 uv 的类内共同邻居。否则,它被视为 uv 的类间共同邻居。类内和类间共同邻居集合大小的比率定义为WIC度量。[1]

Parameters:
G

一个NetworkX无向图。

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

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

delta浮点数,可选(默认 = 0.001)

用于防止在两个节点之间没有类间共同邻居时除以零的值。详见[Rb1c94ab70339-1]_。默认值:0.001。

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

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

Returns:
piter迭代器

一个包含3元组 (u, v, p) 的迭代器,其中 (u, v) 是一对节点,p 是它们的WIC度量。

Raises:
NetworkXNotImplemented

如果 G 是一个 DiGraphMultigraphMultiDiGraph

NetworkXAlgorithmError
  • 如果 delta 小于或等于零。

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

NodeNotFound

如果 ebunch 中有一个节点不在 G 中。

References

[1]

Jorge Carlos Valverde-Rebaza 和 Alneu de Andrade Lopes。 基于社区信息的复杂网络中的链接预测。 在第21届巴西人工智能进展会议(SBIA’12)的论文集中 https://doi.org/10.1007/978-3-642-34459-6_10

Examples

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