【问题标题】:Find overlapping modularity in two graphs - iGraph in Python在两个图中找到重叠的模块化 - Python中的iGraph
【发布时间】:2016-09-28 06:08:31
【问题描述】:

我在 iGraph 中创建了两个相关的图,A 和 G。我使用 infomap 或 label_propagation 方法在 G 中找到了结构中的社区(因为它们是两个允许加权的定向链接)。从这里,我可以看到这个社区对于 G 图的模块化。但是,我需要看看这将为 A 图提供什么样的模块化。我该怎么做?

【问题讨论】:

  • “相关”是什么意思?相同的节点但不同的链接?
  • 是的。这两个图具有相同的顶点。但是,其中一个是“盟友”图,其中链接表示互助,另一个是“敌人”图,其中链接表示攻击。我想使用盟友图 (G) 来获得社区结构,然后通过查看是否存在负模块化来查看它是否与敌人图 (A) 相关(或者更确切地说,反相关)。
  • 除了我的回答:您可能还对相关聚类 (en.wikipedia.org/wiki/Correlation_clustering) 感兴趣,这个问题或多或少等同于签名图中的社区检测。它包括找到一个分区,使得大多数积极的链接在零件内部,而大多数消极的链接在零件之间。

标签: python graph igraph


【解决方案1】:

您是否尝试过使用modularity 函数?

im <- infomap.community(graph=G)
qG <- modularity(im)
memb <- membership(im)
qA <- modularity(x=A, membership=memb, weights=E(A)$weight)
cat("qG=",qG," vs. qA=",qA,"\n",sep="")

注意:使用 igraph v0.7 测试,我现在没有更新的版本。参数/函数名称可能略有不同。

【讨论】:

  • 我知道这是旧的,但这是 R 的答案,而不是 python。
【解决方案2】:

所以我想通了。您需要做的是找到一个社区结构,可以是预定义的,也可以使用为社区检测提供的方法之一,例如 infomap 或 label_propagation。这为您提供了一个顶点聚类,您可以使用它来放置在另一个图上并从中使用 .q 来查找模块化。

【讨论】:

  • 我会展示您的代码,以便将来对人们更有帮助。
猜你喜欢
  • 2014-10-06
  • 1970-01-01
  • 2017-08-05
  • 2021-11-09
  • 2020-10-04
  • 2022-11-14
  • 1970-01-01
  • 1970-01-01
  • 2017-10-06
相关资源
最近更新 更多