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则默认为单例分区。默认值为 Nonenode_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