COMMUNITY DETECTION_python-louvain
Python-louvain Package
pip install python-louvain
- import community
- #first compute the best partition
- partition = community.best_partition(G)
#Drawing partition
Method 1:
- #drawing
- size = float(len(set(partition.values())))
- pos = nx.spring_layout(G)
- count = 0.
- for com in set(partition.values()) :
- count = count + 1.
- list_nodes = [nodes for nodes in partition.keys()
- if partition[nodes] == com]
- nx.draw_networkx_nodes(G, pos, list_nodes, node_size = 20,
- node_color = str(count / size))
- nx.draw_networkx_edges(G, pos, alpha=0.5)
- plt.show()
Method 2:
- pos = nx.spring_layout(G)
- values = [partition.get(node) for node in G.nodes()]
- nx.draw_networkx(G, pos, cmap=plt.get_cmap('magma'), node_color=values, node_size=50, with_labels=False)
Supplementary knowledge:
1. what is the partition of graphs.
partition: dict; {key (nodes_id): values(community_id)}
2. function : community.best_partition(G)
- Returns
- -------
- partition : dictionnary
- The partition, with communities numbered from 0 to number of communities
- def best_partition(graph,
- partition=None,
- weight='weight',
- resolution=1.,
- randomize=None,
- random_state=None):
- """Compute the partition of the graph nodes which maximises the modularity
- (or try..) using the Louvain heuristices
- This is the partition of highest modularity, i.e. the highest partition
- of the dendrogram generated by the Louvain algorithm.
- Parameters
- ----------
- graph : networkx.Graph
- the networkx graph which is decomposed
- partition : dict, optional
- the algorithm will start using this partition of the nodes.
- It's a dictionary where keys are their nodes and values the communities
- weight : str, optional
- the key in graph to use as weight. Default to 'weight'
- resolution : double, optional
- Will change the size of the communities, default to 1.
- represents the time described in
- "Laplacian Dynamics and Multiscale Modular Structure in Networks",
- R. Lambiotte, J.-C. Delvenne, M. Barahona
- randomize : boolean, optional
- Will randomize the node evaluation order and the community evaluation
- order to get different partitions at each call
- random_state : int, RandomState instance or None, optional (default=None)
- If int, random_state is the seed used by the random number generator;
- If RandomState instance, random_state is the random number generator;
- If None, the random number generator is the RandomState instance used
- by `np.random`.
- Returns
- -------
- partition : dictionnary
- The partition, with communities numbered from 0 to number of communities
COMMUNITY DETECTION_python-louvain的更多相关文章
- 模块度与Louvain社区发现算法
Louvain算法是基于模块度的社区发现算法,该算法在效率和效果上都表现较好,并且能够发现层次性的社区结构,其优化目标是最大化整个社区网络的模块度. 模块度(Modularity) 模块度是评估一个社 ...
- Louvain 算法原理
Louvain算法是一种基于图数据的社区发现算法,算法的优化目标为最大化整个数据的模块度,模块度的计算如下: 其中m为图中边的总数量,k_i表示所有指向节点i的连边权重之和,k_j同理.A_{i,j} ...
- Louvain Modularity Fast unfolding of communities in large networks
Louvain Modularity Fast unfolding of communities in large networks https://arxiv.org/pdf/0803.0476.p ...
- Louvain algorithm for community detection
主要理解Louvain 算法中对于模块度的定义:模块度是评估一个社区网络划分好坏的度量方法,它的物理含义是社区内节点的连边数与随机情况下的边数只差,它的取值范围是 [−1/2,1).可以简单地理解为社 ...
- [论文阅读笔记] LouvainNE Hierarchical Louvain Method for High Quality and Scalable Network Embedding
[论文阅读笔记] LouvainNE: Hierarchical Louvain Method for High Quality and Scalable Network Embedding 本文结构 ...
- Louvain 论文笔记
Louvain Introduce Louvain算法是社区发现领域中经典的基于模块度最优化的方法,且是目前市场上最常用的社区发现算法.社区发现旨在发现图结构中存在的类簇(而非传统的向量空间). Al ...
- 并行Louvain社区检测算法
因为在我最近的科研中需要用到分布式的社区检测(也称为图聚类(graph clustering))算法,专门去查找了相关文献对其进行了学习.下面我们就以这篇论文IPDPS2018的文章[1]为例介绍并行 ...
- conda安装包
前面讲了有关conda改变镜像提高安装速度,这里来解决很多实用C写的酷,在Windows下不好安装的解决方案 1. 寻找wheel预编译文件 没有的话 2.使用conda命令安装 没有该包的话 3.实 ...
- Hadoop 全分布模式 平台搭建
现将博客搬家至CSDN,博主改去CSDN玩玩~ 传送门:http://blog.csdn.net/sinat_28177969/article/details/54138163 Ps:主要答疑区在本帖 ...
- {ICIP2014}{收录论文列表}
This article come from HEREARS-L1: Learning Tuesday 10:30–12:30; Oral Session; Room: Leonard de Vinc ...
随机推荐
- 获取redis实例绑定cpu的情况
redis是一个单线模型的nosql类型的数据库,而目前接触到的服务器大都是多核的,比如8c,16c,32c,64c等等.为了充分利用主机,在一台主机上必然会部署多个redis实例,默认情况cpu会随 ...
- opencv —— saturate_cast 溢出保护
src.at<uchar>(i,j)[0] = saturate_cast<uchar>(data); if (data < 0) data = 0; else if ( ...
- Centos 7 firewall的防火墙的规则
这是官方文档: http://www.firewalld.org/documentation/man-pages/firewall-cmd.html 想使用iptables的规则,firewall也可 ...
- Redis入门-01
目录 使用场景 支持的数据类型 主从复制 原理 配置 哨兵机制 持久化 RDB(Redis Database) AOF(Append Only File) redis(Remote DIctionar ...
- 42.MySQL数据库安装,及驱动程序选择
MySQL驱动程序安装: 我们使用Django来操作Mysql,实际上底层还是通过Python来操作的,因此我们想要使用Django来操作mysql,首先还是需要安装一个驱动程序,在Python3中, ...
- tensorflow数据统计
本篇内容包括,tf.norm(张量的范数).tf.reduce_min/max(最大最小值).tf.argmax/argmin(最大最小值的位置).tf.equal(张量的比较).tf.unique( ...
- windows 2012 r2怎么进入本地组策略
可以使用命令行或使用 Microsoft 管理控制台 (MMC) 打开本地组策略编辑器.通过命令行打开本地组策略编辑器的步骤单击“开始”,在“开始搜索”框中键入 gpedit.msc,然后按 Ente ...
- IDEA自定义TODO
配置自己的TODO标签 , 避免跟其他人产生错乱 打开TODO页签 , 有三种方式打开 菜单栏打开 View -> Tool Windows -> TODO 快捷键打开 Alt + 6 快 ...
- javascript 权威指南一
1. JavaScript是面向web(网页)的编程语言. 2.html: 描述网页内容,css:描述网页样式,JavaScript:描述网页行为 3.JavaScript非常适合面向对象和函数式的编 ...
- Constructing Roads POJ - 2421 最小生成树板子题
#include<iostream> #include<cstring> #include<algorithm> using namespace std; ; in ...