cdlib.algorithms.significance_communities

cdlib.algorithms.significance_communities(g_original: object, initial_membership: list | None = None, node_sizes: list | None = None) NodeClustering

Significance_communities 是一个模型,其优化的质量函数为:

\[Q = \sum_c \binom{n_c}{2} D(p_c \parallel p)\]

其中 \(n_c\) 是社区 \(c\) 中的节点数量,\(p_c = \frac{m_c}{\binom{n_c}{2}}\) 是社区 \(c\) 的密度,\(p = \frac{m}{\binom{n}{2}}\) 是图的整体密度,最后 \(D(x \parallel y) = x \ln \frac{x}{y} + (1 - x) \ln \frac{1 - x}{1 - y}\) 是二元 Kullback-Leibler 散度。 对于有向图,只需将二项式乘以 2。在这种公式中,Erdos-Renyi 图中的预期显著性行为大致为 \(\frac{1}{2} n \ln n\),适用于有向图和无向图。

警告

此方法不适用于加权图。

支持的图表类型

无向

有向

加权

是的

Parameters:
  • g_original – 一个 networkx/igraph 对象

  • initial_membership – 整数列表 分区的初始成员资格。如果 None 则默认为单例分区。默认值为 None

  • node_sizes – 整数列表,或顶点属性 节点的大小是必要的,以便了解聚合图中社区的大小。通常所有节点的值都设置为1,但在特定情况下可以更改。默认值为None

Returns:

节点聚类对象

Example:

>>> from cdlib import algorithms
>>> import networkx as nx
>>> G = nx.karate_club_graph()
>>> coms = algorithms.significance_communities(G)
References:

Traag, V. A., Krings, G., & Van Dooren, P. (2013). 社区结构中的重要尺度。 科学报告, 3, 2930. 10.1038/srep02930

注意

参考实现:https://github.com/vtraag/leidenalg