cdlib.algorithms.rb_pots

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

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

\[Q = \sum_{ij} \left(A_{ij} - \gamma \frac{k_i k_j}{2m} \right)\delta(\sigma_i, \sigma_j)\]

其中 \(A\) 是邻接矩阵,\(k_i\) 是节点 \(i\) 的(加权)度,\(m\) 是边的总数(或总边权重),\(\sigma_i\) 表示节点 \(i\) 的社区,如果 \(\sigma_i = \sigma_j\)\(\delta(\sigma_i, \sigma_j) = 1\),否则为 0。 对于有向图,使用了一种稍微不同的公式,如 Leicht 和 Newman 所提出的:

\[Q = \sum_{ij} \left(A_{ij} - \gamma \frac{k_i^\mathrm{out} k_j^\mathrm{in}}{m} \right)\delta(\sigma_i, \sigma_j),\]

其中 \(k_i^\mathrm{out}\)\(k_i^\mathrm{in}\) 分别表示节点 \(i\) 的出度和入度,而 \(A_{ij}\) 表示从 \(i\)\(j\) 的边。 请注意,当设置 \(\gamma=1\) 并通过 \(2m\)\(m\)(对于有向图)进行归一化时,这与Leiden算法相同。

支持的图表类型

无向

有向

加权

是的

是的

是的

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

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

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

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

Returns:

节点聚类对象

Example:

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

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

Leicht, E. A., & Newman, M. E. J. (2008). 有向网络中的社区结构。 物理评论快报, 100(11), 118703. 10.1103/PhysRevLett.100.118703