cdlib.algorithms.cpm

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

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

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

其中 \(A\) 是邻接矩阵,\(\sigma_i\) 表示节点 \(i\) 的社区,如果 \(\sigma_i = \sigma_j\)\(\delta(\sigma_i, \sigma_j) = 1\),否则为 0,最后 \(\gamma\) 是一个分辨率参数。

社区的内部密度

\[p_c = \frac{m_c}{\binom{n_c}{2}} \geq \gamma\]

高于 \(\gamma\),而外部密度

\(p_{cd} = \frac{m_{cd}}{n_c n_d} \leq \gamma\) 低于 \(\gamma\)。换句话说,选择一个特定的 \(\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.cpm(G)
References:

Traag, V. A., Van Dooren, P., & Nesterov, Y. (2011). 无分辨率限制社区检测的狭窄范围。 物理评论 E, 84(1), 016114. 10.1103/PhysRevE.84.016114

注意

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