cdlib.algorithms.rber_pots

cdlib.algorithms.rber_pots(g_original: object, initial_membership: list | None = None, weights: list | None = None, node_sizes: list | None = None, resolution_parameter: float = 1) NodeClustering

rber_pots 是一个模型,其中要优化的质量函数是:

\[Q = \sum_{ij} \left(A_{ij} - \gamma p \right)\delta(\sigma_i, \sigma_j)\]

其中 \(A\) 是邻接矩阵,\(p = \frac{m}{\binom{n}{2}}\) 是图的整体密度,\(\sigma_i\) 表示节点 \(i\) 的社区,\(\delta(\sigma_i, \sigma_j) = 1\) 如果 \(\sigma_i = \sigma_j\) 否则为 0,最后 \(\gamma\) 是一个分辨率参数。

支持的图表类型

无向

有向

加权

是的

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

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

  • weights – 双精度列表,或边属性 边的权重。可以是可迭代对象或边属性。默认值为 None

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

  • resolution_parameter – double >0 一个控制聚类粗糙度的参数值。较高的分辨率会导致更多的社区,而较低的分辨率会导致较少的社区。默认值为1

Returns:

节点聚类对象

Example:

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

Reichardt, J., & Bornholdt, S. (2006). 社区检测的统计力学. Physical Review E, 74(1), 016110. 10.1103/PhysRevE.74.016110

注意

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