首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >寻找模块性和社区成员

寻找模块性和社区成员
EN

Stack Overflow用户
提问于 2013-01-15 12:08:21
回答 1查看 2.2K关注 0票数 0

我希望找到一个网络的模块化,并找到每个社区中节点的身份。

我认为这是获得模块化的方法:

代码语言:javascript
运行
复制
g <- graph.full(5) %du% graph.full(5) %du% graph.full(5)
g <- add.edges(g, c(1,6, 1,11, 6, 11))
ebc <- edge.betweenness.community(g)

sizes(ebc)
#Community sizes
#1 2 3 
#5 5 5 

modularity(g,membership(ebc))
#[1] 0.5757576

但是在这个链接由Gabor上我得到了以下代码:

代码语言:javascript
运行
复制
memberships <- list()
G <- graph.full(5) %du% graph.full(5) %du% graph.full(5)
G <- add.edges(G, c(1,6, 1,11, 6, 11))

### edge.betweenness.community
ebc <- edge.betweenness.community(G)
mods <- sapply(0:ecount(G), function(i) {
  g2 <- delete.edges(G, ebc$removed.edges[seq(length=i)])
  cl <- clusters(g2)$membership
  modularity(G, cl)
})

g2 <- delete.edges(G, ebc$removed.edges[1:(which.max(mods)-1)])
memberships$`Edge betweenness` <- clusters(g2)$membership

这似乎和我做的一样,我认为delete.edgesclusters是通过删除连接边,然后在每个组件中获取节点的ID,将模块分割成单独的组件。

虽然我有几个问题:

  1. 在@Gabor Csardil的代码中,为什么modularity调用使用clusters(G)$membership,而不是像我在我的示例中那样使用ebc?有什么不同?(我原以为这会高估实际的模块化?)似乎也有使用community.to.membership的替代方法。
  2. mods代码返回我不理解的错误,这在一定程度上是为什么我不能探索g2cl来了解更多正在发生的事情:

Delete.edges中的错误(G,ebc$removed.edgesseq(长度= i)):At iterators.c:1809 :无法创建迭代器,无效的边id,无效的顶点id

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-15 14:52:45

一般的答案是wiki中的代码已经过时了。它适用于0.5.x版,但不适用于0.6.x版。更具体而言:

  1. 在iGraph0.5.x版本中,没有直接获得成员向量的方法,在0.6.x版本中,您只需说membership(ebc)
  2. 在0.5.x版本中,顶点ids以零开头,在0.6.x版本中,顶点ids以1开头,因此不需要在delete.edges()行中减去顶点ids。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14337391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档