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则默认为单例分区。默认值为 Noneweights – 双精度列表,或边属性 边的权重。可以是可迭代对象或边属性。默认值为 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