模块度计算python代码_转:模块度(Modularity)与Fast Newman算法讲解与代码实现

本文介绍了模块度(Modularity)的概念,它用于衡量社区划分的优劣。作者详细解释了模块度的计算公式,并通过一个简单的例子进行说明。文章还提供了使用Python实现的模块度计算代码,以及对算法效率的讨论。最后,作者分享了写博客的感想和参考文献。
摘要由CSDN通过智能技术生成

一、背景介绍

Modularity(模块度), 这个概念是2003年一个叫Newman的人提出的。这个人先后发表了很多关于社区划分的论文,包括2002年发表的著名的Girvan-Newman(G-N)算法,和2004发表的Fast Newman(F-B)算法,Modularity就是F-B算法中提出的(03年提出的概念,04年确认发表)。

在2006年的时候Newman重新定义了Modularity,实际上只是对原来的公式做了变换,使其适用于Spectral Optimization Algorithms。

早期的算法不能够很好的确认什么样的社区划分是最优的。Modularity这个概念就是为了定义一个对于社区划分结果优劣的评判。

二、Modularity

我们先从06年的定义讲起:

Q=12m∑vw[Avw−kvkw2m]δ(cv,cw)(1)(1)Q=12m∑vw[Avw−kvkw2m]δ(cv,cw)

Q就是模块度,模块度越大则表明社区划分效果越好。Q值的范围在[-0.5,1),论文表示当Q值在0.3~0.7之间时,说明聚类的效果很好。

我们现在假设有xx个节点,每个节点都代表一个输入,并且我们已经将这些输入划分为了NN个社区,节点彼此之间共有mm个连接。vv和ww是xx中的任意两个节点,当两个节点直接相连时Avw=1Avw=1,否则Avw=0Avw=0。kvkv代表的是节点vv的度,度是图论的基础知识,从一个节点出发有几个边,我们就说这个节点的度是多少。很容易理解,这里的2m2m实际就是整个图中的度(每个节点都计算一次度,那么每条边对应两个节点,所以要乘以2)。δ(cv,cw)δ(cv,cw)是用来判断节点vv和

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值