cdlib.algorithms.surprise_communities¶
- cdlib.algorithms.surprise_communities(g_original: object, initial_membership: list | None = None, weights: list | None = None, node_sizes: list | None = None) NodeClustering¶
Surprise_communities 是一个模型,其中要优化的质量函数是:
\[Q = m D(q \parallel \langle q \rangle)\]其中 \(m\) 是边的数量,\(q = \frac{\sum_c m_c}{m}\) 是内部边的比例,\(\langle q \rangle = \frac{\sum_c \binom{n_c}{2}}{\binom{n}{2}}\) 是预期的内部边比例,最后
\(D(x \parallel y) = x \ln \frac{x}{y} + (1 - x) \ln \frac{1 - x}{1 - y}\) 是二元Kullback-Leibler散度。
对于有向图,我们可以将二项式乘以2,这会使\(\langle q \rangle\)保持不变,因此我们可以简单地使用相同的公式。对于加权图,我们可以简单地计算总内部权重而不是边的总数作为\(q\),而\(\langle q \rangle\)保持不变。
支持的图表类型
无向
有向
加权
是的
是的
是的
- Parameters:
g_original – 一个 networkx/igraph 对象
initial_membership – 整数列表 分区的初始成员资格。如果
None则默认为单例分区。默认值为 Noneweights – 双精度列表,或边属性 边的权重。可以是可迭代对象或边属性。默认值为 None
node_sizes – 整数列表,或顶点属性 节点的大小是必要的,以便了解聚合图中社区的大小。通常所有节点的值都设置为1,但在特定情况下可以更改。默认值为None
- Returns:
节点聚类对象
- Example:
>>> from cdlib import algorithms >>> import networkx as nx >>> G = nx.karate_club_graph() >>> coms = algorithms.surprise_communities(G)
- References:
Traag, V. A., Aldecoa, R., & Delvenne, J.-C. (2015). 使用渐近惊喜检测社区。 物理评论 E, 92(2), 022816. 10.1103/PhysRevE.92.022816