在R(iGraph等)中进行聚类后,您是否可以维护群集中的节点+边缘以进行单独的聚类分析?

时间:2015-04-19 17:00:49

标签: r cluster-analysis igraph

基本上我尝试过几种不同的聚类方式。我通常可以在iGraph中找到一个点,每个节点都标有一个簇。然后,我可以识别单个群集中的所有节点。然而,这会失去他们的优势。

我必须重新迭代群集1中所有节点的原始数据集,才能获得两个节点+边缘都在群集中的节点。我必须为每个群集执行此操作。

这似乎是一个痛苦的漫长过程,可能是我的谷歌缺少的捷径。

那么,在集群或执行社区检测流程之后,是否有一种简单的方法可以将单个群集/社区维护为自己的较小图形 - 即保留它们之间的所有节点和边缘?

2 个答案:

答案 0 :(得分:2)

您可以使用delete.vertices()创建子图。例如:

library(igraph)

set.seed(123)

# create random graph
g <- barabasi.game(100, directed = F)
plot(g, layout=layout.fruchterman.reingold)

# do community detection
wc <- multilevel.community(g)
V(g)$community <- membership(wc)

# make community 1 subgraph
g_sub <- delete.vertices(g, V(g)[community != 1])
plot(g_sub, layout=layout.fruchterman.reingold)

答案 1 :(得分:0)

替代方案:

#Create random network
d <- sample_gnm(n=50,m=40)

#Identify the communities
dc <- cluster_walktrap(d)

#Induce a subgraph out of the first community
dc_1 <- induced.subgraph(d,dc[[1]])

#plot that specific community
plot(dc_1)