精华内容
下载资源
问答
  • python实现模块度计算(矩阵版)
    千次阅读
    2020-05-05 16:28:07

    python实现模块度计算(矩阵版)

    模块度的定义和讲解网上有很多,也有一些用python实现的代码,大多是用for循环来写的,有时候跑起来很慢,这里给出用矩阵计算来实现的代码。
    讲解的话可以参考这篇博客,讲的很清楚:模块度(Modularity)与Fast Newman算法讲解与代码实现

    import numpy as np
    
    def Q(array,cluster): 
        #总边数
        m =sum(sum(array))/2
        k1 = np.sum(array,axis=1)
        k2 = k1.reshape(k1.shape[0],1)
        #节点度数积
        k1k2 = k1*k2
        #任意两点连接边数的期望值
        Eij = k1k2/(2*m)
        #节点v和w的实际边数与随机网络下边数期望之差
        B = array - Eij
        #获取节点、社区矩阵
        node_cluster = np.dot(cluster,np.transpose(cluster))
        results = np.dot(B,node_cluster)
        #求和
        sum_results = np.trace(results)
        #模块度计算
        Q = sum_results / (2 * m)
        print("Q:",Q)
        return Q
        
    if __name__ == '__main__':
    
        #邻接矩阵,2表示节点2和节点3之间有两条边相连
        array = np.array([[0, 1, 1],
                          [1, 0, 2],
                          [1, 2, 0]])
    
        #节点类别分别是1,2,2
        cluster = np.array([[1,0],[0,1],[0,1]])
        Q(array,cluster)
    更多相关内容
  • 计算网络划分社区的模块度,支持“基于标签的社区划分表示” 和 “基于邻接位置的社区划分表示”。
  • 论文研究-基于谱方法的复杂网络中社团结构的模块度.pdf, 现实中的大量复杂网络表现出明显的社团结构, 模块度是衡量网络社团结构划分的重要指标函数, 但最常用的NG模块度...
  • 模块度

    千次阅读 2017-12-19 13:30:17
    改进:引入模块度:衡量社区结构划分的质量 二、模块度公式: 两种思路,但是殊途同归 (1) tre表示迹,每一个社区内部的边数 ||e^2||ai表示社区i内部的点所关联的所有的边的数目与总边数的比例 (但是这句话

    一、引入:
    GN算法是找到复杂网络中的最大边介数,然后删除该边界,通过类似于层次聚类的方式(分裂节点),产生不同的社区。
    缺点:无法确定好产生层次,即划分为多少个社区。
    改进:引入模块度:衡量社区结构划分的质量
    二、模块度公式:
    两种思路,但是殊途同归
    (1)这里写图片描述
    tre表示迹,每一个社区内部的边数
    ||e^2||ai表示社区i内部的点所关联的所有的边的数目与总边数的比例
    (但是这句话不好理解)也可以其理解为:
    这里写图片描述
    找到每一个社区内部节点的度除以总边数(节点总数的两倍)
    这里写图片描述 表示节点是否在同一社区里,用01表示
    (二)
    模块度 = (落在同一组内的边的比例)减 (对这些边进行随机分配所得到的概率期望)
    这里写图片描述
    这里写图片描述思路二最终推导的公式与思路一的结论相同
    三、模块度的优化
    四、模块度的缺点与解决方案
    有对应的PPT,私信可发

    展开全文
  • 基于节点-模块置信度及局部模块度双重约束 挖掘前列腺癌候选疾病模块
  • 社区发现(六)--模块度

    千次阅读 2019-06-09 15:35:13
    在社区发现算法中,几乎不可能先确定社区的数目,于是,必须有一种度量...模块度(Modularity)用来衡量一个社区的划分是不是相对比较好的结果。一个相对好的结果在社区内部的节点相似度较高,而在社区外部节点的相...

    转自:https://blog.csdn.net/aspirinvagrant/article/details/45577033
    在社区发现算法中,几乎不可能先确定社区的数目,于是,必须有一种度量的方法,可以在计算的过程中衡量每一个结果是不是相对最佳的结果。

    模块度(Modularity)用来衡量一个社区的划分是不是相对比较好的结果。一个相对好的结果在社区内部的节点相似度较高,而在社区外部节点的相似度较低。

    全局模块度 

    设Avw为网络的邻接矩阵的一个元素,定义为:


    假设cv和cw分别表示点v和点w所在的两个社区,社区内部的边数和网络中总边数的比例:

     

    函数δ(cv,cw)的取值定义为:如果v和w在一个社区,即cv=cw,则为 1,否则为 0。m 为网络中边的总数。 

    模块度的大小定义为社区内部的总边数和网络中总边数的比例减去一个期望值,该期望值是将网络设定为随机网络时同样的社区分配所形成的社区内部的总边数和网络中总边数的比例的大小,于是模块度Q为:

     

    其中kv表示点v的度。

     

    设eij表示社区i和社区j内部边数目的和与总边数的比例,ai表示社区i内部的点所关联的所有的边的数目与总边数的比例。

        

    为了简化Q的计算,假设网络已经划分成n个社区,这个时候就有一个 n维矩阵,Q 的计算可以变成:

     

    在进行每次划分的时候计算Q值,Q取值最大的时候则是此网路较理想的划分。Q值的范围在0-1之间,Q值越大说明网络划分的社区结构准确度越高,在实际的网络分析中,Q值的最高点一般出现在0.3-0.7之间。


    局部模块度 

    有时候,可能不知道全网络的数据,可以用局部社区的局部模块度的方式来检查社区的合理性。假设有一个已经检测出来的社区,社区的节点的集合为V,这些节点所有的邻接节点而加入到集合当中来,形成新的集合V*。定义V*的邻接矩阵为:

    于是,和全局模块度相似的是,可以用节点集V*全部属于节点集V中的元素所占的比例的大小来衡量一个社区的好坏:

    其中,δ(i,j)表示的是如果ij都是V中则值为1,否则为0m*表示的是邻接矩阵内边的数目。

    局部模块度比全局模块度要快的多,因为局部模块度的计算只需要用到局部的网络信息,只需要在刚刚开始的时候扫描一下整个网络。对于中小规模的网络可能局部模块度的效果要低于全局模块度,但是而且对于中等或者大规模的社会网络来说,局部模块度的效果可能还要好一些。

    参考资料:

    Finding community structure in very large networks

    展开全文
  • 模块度Q——复杂网络社区划分评价标准

    万次阅读 多人点赞 2016-07-27 18:35:25
    但是我们依然有方法可以量化或评判我们的社区划分水平,也就是今天要介绍的模块度(Modularity)概念,也称Q值。  从网上看到其他同学写的博客,首先对这方面介绍的不多,仅有的一些文章也是有好有坏,所以决定...
  • 基于python3的社区发现模块度计算

    千次阅读 2020-02-18 17:31:00
    最近在学习社区发现,其中模块度是衡量社区发现的一个重要指标,而且基于模块度进行社团挖掘的论文也很多,以前看了博客中的一位博主介绍的模块度,感觉非常好,不过这个博主采用的是matlab进行实现的,最近疫情严重...
  • 模块度与Louvain社区发现算法

    千次阅读 2017-08-02 11:23:01
    Louvain算法是基于模块度的社区发现算法,该算法在效率和效果上都表现较好,并且能够发现层次性的社区结构,其优化目标是最大化整个社区网络的模块度模块度(Modularity )  模块度是评估一个社区网络...
  • 模块度(Modularity)与Fast Newman算法讲解与代码实现

    万次阅读 多人点赞 2017-03-14 21:52:49
    模块度(Modularity)是由Newman提出的一种衡量社区划分好坏的标准,由04年提出,06年由扩展为另一种形式。本文详细讲解了两种形式的模块度计算和理解,并同时讲解了模块度的矩阵划归形式。文章最后附上用matlab实现...
  • Modularity,中文称为模块度,是 Community Detection(社区发现/社团检测) 中用来衡量社区划分质量的一种方法。要理解Modularity,我们先来看社团和社团检测的概念。社团检测社团检测,就是要在一个图(包含顶点...
  • 模块度(Q值):用来衡量社区划分的好坏。值得注意的是,衡量社区的指标还有NMI(标准互信息)、兰德指数。 模块度函数是由Newman和Girvan在2004年提出的一种用于评估社区划分的全局目标函数,其定义如 公式表示...
  • 社团划分中的一个衡量指标模块度Q的计算,之前一直理解错了,是按照划分之前的原始的图去计算结点信息,同时加上划分以后的社团,所以需要用到原来的图G1和划分完以后的图G2 import networkx as nx def Q(G1,G2): ...
  • 计算网络节点模块内连通模块间连通是复杂网络分析的重要组成。我们可以通过分析节点的模块内连通模块间连通来对节点的重要性进行度量,具有较低的模块内连通模块间连通的节点的重要性则相对较低。
  • import networkx as nx import numpy as np import matplotlib.pyplot as plt #获取空手道俱乐部成员数据 ...#构造邻接矩阵和矩阵 def karateMatrix(G): N=len(G.adj) #初始化邻接矩阵 A=np.zero..
  • 社区划分的标准--模块度

    万次阅读 多人点赞 2015-05-08 11:17:32
    对于中小规模的网络可能局部模块度的效果要低于全局模块度,但是而且对于中等或者大规模的社会网络来说,局部模块度的效果可能还要好一些。 参考资料: Finding community structure in very large ...
  • 社区挖掘中模块度Q的计算

    千次阅读 2015-02-12 22:20:58
    社区挖掘中模块度Q的计算 Modularity Measure(模块化度量值),由Newman等人提出,是目前常用的一种衡量网络中社区稳定度的方法 如上图所示的图中,我们将这个图以图中两根横线为方式进行划分,共得三个社区...
  • 社区模块度的理解

    千次阅读 2014-11-26 16:38:06
    Modularity Measure(模块化度量值),由Newman等人提出,是目前常用的一种衡量网络中社区稳定的方法。 如上图所示,我们将这个图以图中两根横线为方式进行划分,共得三个社区(community),其中红色,绿色...
  • Modularity Measure(模块化度量值),由Newman等人提出,是目前常用的一种衡量网络中社区稳定的方法。 如上图所示,我们将这个图以图中两根横线为方式进行划分,共得三个社区(community),其中红色,绿色以及...
  • 复杂网络分析——模块度计算

    千次阅读 2014-05-10 09:05:04
    Modularity Measure(模块化度量值),由Newman等人提出,是目前常用的一种衡量网络中社区稳定的方法。 如上图所示,我们将这个图以图中两根横线为方式进行划分,共得三个社区(community),其中红色
  • Modularity Measure(模块化度量值),由Newman等人提出,是目前常用的一种衡量网络中社区稳定的方法。 如上图所示,我们将这个图以图中两根横线为方式进行划分,共得三个社区(community),其中红色
  •  Q就是模块度模块度越大则表明社区划分效果越好。Q值的范围在[-0.5,1),论文表示当Q值在0.3~0.7之间时,说明聚类的效果很好 具体推导流程参见博客, 这篇博客推导流程非常详细,而且使用矩阵运算减少了运算...
  • 算法来自论文:Fast unfolding of communities in large networks 是一种快速的非重叠的社团划分算法 使用说明,直接调用BGLL函数,参数传入Graph类型的变量就可以得到结果,返回值第一个是所返回的社区结果,第二个...
  • 模块独立性的度量(耦合和内聚)

    千次阅读 2020-11-21 22:28:16
    从两个方面来度量模块之间的独立性,这两个概念是模块的耦合模块的内聚 耦合 耦合分为: 独立耦合 , 数据耦合 , 控制耦合 , 公共耦合 和 内容耦合 独立耦合 指两个模块之间彼此完全独立,没有直接联系,他们...
  • 《OSGi与Equinox:创建高度模块化的Java系统》分为四个部分。第一部分主要介绍了OSGi和Equinox,以及OSGi标准的Eclipse实现;第二部分采用非正式教程的方式教给读者如何从零开始构建真实的Toast应用,针对每一个步骤...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 542,778
精华内容 217,111
关键字:

模块度