首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么optimal_count没有给出正确的结果?

为什么optimal_count没有给出正确的结果?
EN

Stack Overflow用户
提问于 2015-02-05 17:09:44
回答 1查看 88关注 0票数 1

我正在尝试理解python,特别是community_walktrap函数。我创建了以下示例:

代码语言:javascript
复制
import numpy as np
import igraph

mat = np.zeros((200,200)) + 50
mat[20:30,20:30] = 2
mat[80:90,80:90] = 2

g = igraph.Graph.Weighted_Adjacency(mat.tolist(),
                                    mode=igraph.ADJ_DIRECTED) 
wl = g.community_walktrap(weights=g.es['weight'])

我会假设社区的最佳数量是3,但是

代码语言:javascript
复制
print wl.optimal_count

给我1,如果我强迫树状图在3 wl.as_clustering(3)被剪掉,我会得到一个正确的会员名单。我optimal_count怎么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-06 04:17:14

你为什么认为最优的集群数应该是3?在我看来,所有的节点都有相当强的连接(它们的权重为50),除了两个连接较弱的小组。注意,distances中的聚类方法期望权重表示相似性,而不是距离。还要注意的是,iGraph中的大多数聚类算法对于有向网络没有很好的定义(其中有些甚至简单地拒绝有向网络)。

至于它的价值,wl.optimal_count只需计算所谓的模块化度量(请参阅Graph类的modularity()方法),然后选择模块性最高的集群计数。只有一个集群的模块性为零(这就是度量的定义)。三个集群的模块性在-0.0083左右,所以igraph只选择一个集群而不是三个集群是正确的:

代码语言:javascript
复制
>>> wl.as_clustering(3).modularity
-0.00829996846600007
>>> wl.as_clustering(1).modularity
0.0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28349966

复制
相关文章

相似问题

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