【发布时间】:2016-08-11 23:01:40
【问题描述】:
我正在使用 igraph 社区检测,但社区规模太小或太大。有没有办法指定检测到的社区的大小?如果没有,我有什么办法可以手动拆分或合并从 igraph 检测到的社区?谢谢!
【问题讨论】:
-
您好,欢迎来到 Stack Overflow。请提供可重现的示例:stackoverflow.com/questions/5963269/…
我正在使用 igraph 社区检测,但社区规模太小或太大。有没有办法指定检测到的社区的大小?如果没有,我有什么办法可以手动拆分或合并从 igraph 检测到的社区?谢谢!
【问题讨论】:
虽然我认为无法设置/指定igraph 检测到的社区的大小,但某些社区检测算法允许您指定多少 em> 您想要的社区(拆分/合并的替代方法)。
您可以使用cluster_spinglass() 函数并将spins 设置为所需的社区数量。 或者使用其中一种分层方法,然后使用cut_at() 获取所需的社区数量,使用no 参数指定您想要的社区数量。
示例代码:
# Set up your graph object
g <-[an igraph object] # set up your graph
# Use spinglass to create a set number of communities
sg <- g %>% cluster_spinglass(spins = 10) # produces 10 communities using spinglass algorithm
# Use hierarchical methods and cut_at to create a set number of communities
walk <- g %>% cluster_walktrap() %>% cut_at(no = 10)
eb <- g %>% cluster_edge_betweenness() %>% cut_at(no = 10)
请注意,spinglass 方法将返回一个 communities 对象,而 cut_at 方法只是返回图形中所有节点的社区索引(即一个简单的数字向量)。
您可以在communitieshelp page找到更多详细信息。
【讨论】: