跳到内容

此函数实现了多级模块化优化算法,用于查找社区结构,请参见下面的参考文献。它基于模块化度量和分层方法。

用法

cluster_louvain(graph, weights = NULL, resolution = 1)

参数

graph

输入图。它必须是无向图。

weights

边的权重。它必须是正数值向量,NULLNA。如果它是 NULL 且输入图具有 ‘weight’ 边属性,则将使用该属性。如果为 NULL 且不存在此类属性,则边将具有相等的权重。如果该图具有 ‘weight’ 边属性,但您不想将其用于社区检测,请将其设置为 NA。较大的边权重意味着此函数的连接更强。

resolution

可选的分辨率参数,允许用户调整算法内部使用的模块化函数的分辨率参数。较低的值通常会产生更少、更大的集群。当分辨率参数设置为 1 时,将恢复模块化的原始定义。

cluster_louvain() 返回一个 communities() 对象,有关详细信息,请参见 communities() 手册页。

详细信息

此函数实现了多级模块化优化算法,用于查找社区结构,详细信息请参见 VD Blondel, J-L Guillaume, R Lambiotte and E Lefebvre: Fast unfolding of community hierarchies in large networks, https://arxiv.org/abs/0803.0476

它基于模块化度量和分层方法。最初,每个顶点都被分配到自己的社区中。在每个步骤中,顶点以局部贪婪的方式重新分配到社区:每个顶点移动到其对模块化贡献最高的社区。当没有顶点可以重新分配时,每个社区都被视为其自身的顶点,并且该过程再次从合并的社区开始。当只剩下一个顶点或者模块化无法在一个步骤中进一步增加时,该过程停止。自 igraph 1.3 起,顶点以随机顺序处理。

此函数由 Tom Gregorovic 贡献。

参考文献

Vincent D. Blondel, Jean-Loup Guillaume, Renaud Lambiotte, Etienne Lefebvre: Fast unfolding of communities in large networks. J. Stat. Mech. (2008) P10008

作者

Tom Gregorovic, Tamas Nepusz ntamas@gmail.com

示例


# This is so simple that we will have only one level
g <- make_full_graph(5) %du% make_full_graph(5) %du% make_full_graph(5)
g <- add_edges(g, c(1, 6, 1, 11, 6, 11))
cluster_louvain(g)
#> IGRAPH clustering multi level, groups: 3, mod: 0.58
#> + groups:
#>   $`1`
#>   [1] 1 2 3 4 5
#>   
#>   $`2`
#>   [1]  6  7  8  9 10
#>   
#>   $`3`
#>   [1] 11 12 13 14 15
#>