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