louvain算法

article/2025/9/27 22:22:54

简介       

         louvain算法由比利时鲁汶大学的 Vincent D.Blondel 等人于 2008 年提出,因其能以较高的效率计算出令人满意的社区识别结果,是近年来最多被提及和使用的社区识别算法。

         Louvain算法是一种基于模块度(模块度越大则表明社区划分效果越好。Q值的范围在[-0.5,1),论文表示当Q值在0.3~0.7之间时,说明聚类的效果很好。)的社区发现算法。其基本思想是网络中节点尝试遍历所有邻居的社区标签,并选择最大化模块度增量的社区标签。在最大化模块度之后,每个社区看成一个新的节点,重复直到模块度不再增大。

相关准备

安装louvain

        louvain目前版本是0.16

pip install python-louvain

安装networkx

        Networkx是一个Python的包,可以用来创建和处理复杂的图网络结构。

pip install networkx

试运行

        我在网上找了一个代码案例,看看是否能够正常的运行,不知道下面的代码是啥意思不要紧,只是测试安装的包是否能用。

import community as community_louvain
import matplotlib.cm as cm
import matplotlib.pyplot as plt
import networkx as nx# load the karate club graph
G = nx.karate_club_graph()#first compute the best partition
partition = community_louvain.best_partition(G)# compute the best partition
partition = community_louvain.best_partition(G)# draw the graph
pos = nx.spring_layout(G)
# color the nodes according to their partition
cmap = cm.get_cmap('viridis', max(partition.values()) + 1)
nx.draw_networkx_nodes(G, pos, partition.keys(), node_size=40,cmap=cmap, node_color=list(partition.values()))
nx.draw_networkx_edges(G, pos, alpha=0.5)
plt.show()

 算法描述

1. 模块度优化阶段

        每个节点将自己作为自己社区标签。每个节点遍历自己的所有邻居节点,尝试将自己的社区标签更新成邻居节点的社区标签,选择模块度增量最大(贪婪思想)的社区标签,直到所有节点都不能通过改变社区标签来增加模块度。

        也就是说,首先将每个节点指定到唯一的一个社区,然后按顺序将节点在这些社区间进行移动。怎么移动呢?假设有一节点 i ,它有三个邻居节点 j1, j2, j3,我们分别尝试将节点 i 移动到 j1, j2, j3 所在的社区,并计算相应的 modularity 变化值ΔQ,哪个变化值最大就将节点 i 移动到相应的社区中去(当然,这里我们要求最大的 modularity 变化值要为正,如果变化值均为负,则节点 i 保持不动)。按照这个方法反复迭代,直到网络中任何节点的移动都不能再改善总的 modularity 值为止。

        化简后:

2. 网络凝聚阶段

        每个社区合并为一个新的超级节点,超级节点的边权重为原始社区内所有节点的边权重之和,形成一个新的网络。

算法流程

1、初始时将每个顶点当作一个社区,社区个数与顶点个数相同。
2、依次将每个顶点与之相邻顶点合并在一起,计算它们最大的模块度增益是否大于0,如果大于          0,就将该结点放入模块度增量最大的相邻结点所在社区。
3、迭代第二步,直至算法稳定,即所有顶点所属社区不再变化。
4、将各个社区所有节点压缩成为一个结点,社区内点的权重转化为新结点环的权重,社区间权重        转化为新结点边的权重。
5、重复步骤1-3,直至算法稳定。


http://chatgpt.dhexx.cn/article/iaIH9ia1.shtml

相关文章

社区发现算法——Louvain 算法

Louvain 算法 原始论文为:《Fast unfolding of communities in large networks》。 所以又被称为Fast unfolding算法。 Louvain算法是一种基于模块度的社区发现算法。其基本思想是网络中节点尝试遍历所有邻居的社区标签,并选择最大化模块度增量的社区…

Win10系统导入证书私钥

一、Win10系统导入证书私钥 二、直接点击“下一步”即可 三、输入私钥密码,“导入选项”按下图所示选择,点击“下一步” 四、默认选择“自动选择证书存储”,点击“下一步” 五、点击“完成”,弹出“导入成功”窗户,则私…

解决Win10无法安装没有数字签名驱动的问题

建议按如下步骤操作后,手动安装没有数字签名的驱动,亲测可以使用,之前也为没办法安装没有数字签名的驱动烦躁的不行,修改完启动项后,就安装成功了。 1.第一步打开开始菜单,选择设置 2.第二步打开更新和安全…

Win10下安装 Redis

Win 10下安装 Redis 一、安装环境二、下载windows版本的Redis三、安装Redis四、安装服务五、启动服务六、测试Redis 写在前面 Redis 是一个开源使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。 Redis 通常被称作数据结构数据库&…

win10 安装配置Git

1、下载Git: 官网下载地址:Git - Downloading Package 选择相应的版本下载git 百度地址:链接:https://pan.baidu.com/s/1Y_P_ek1Pb9Zt04n3wsAlzA 提取码:3p60 2、 安装: 环境:Windows 10 6…

win10系统激活遇到的问题

1. 0xC004F069 提示“0xC004F069 在运行 Microsoft Windows 非核心版本的计算机上,运行“slui.exe 0x2a 0xC004F069”,多半是因为当前的windows系统不是最新的,需要更新(更新win10) 2. 0xFFFFFFFF 我这里在解决1后&…

Win10添加ssh公钥

1,创建ssh-key ssh-keygen.exe 2,运行ssh-agent Start-Service ssh-agent PS C:\Users\Administrator\.ssh> Start-Service ssh-agent Start-Service : 由于以下错误无法启动服务“OpenSSH Authentication Agent (ssh-agent)”: 无法启动计算机“…

Win10 PowerToys官方免费效率小工具集

文章目录 颜色选择器​FancyZones 窗口增强管理器PowerToys Run 应用启动器Keyboard Manager 键盘映射管理器 / 键位修改工具PowerRename 强力批量文件重命名工具File Explorer (Preview Pane) 文件管理器“预览窗格”Image Resizer 批量图片处理器 (尺寸修改/缩放/转换格式)Wi…

关于如何获取Win10 蓝牙Link Key的方法

本文记录如何获取Win10 蓝牙Link Key信息: 使用Win10 Notebook打开蓝牙, 配对连接上设备后,蓝牙Link Key的显示位置在: 计算机 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys 但执行”rege…

win环境下SSH key 配置

从Gitlab上拉取代码报错: Warning: Permanently added gitlab.wang.cn,47.94.8.13 (ECDSA) to the list of known hosts. Connection closed by 47.94.148.123 port 22 Could not read from remote repository. Please make sure you have the correct access rig…

Win10系统Git安装,及ssh key配置

文章目录 前言一、安装Git1. 下载并安装2. 报错及解决方法 二、生成SSH key1. 鼠标右键点击 Git Bash here2. 依次执行以下命令: 三、Gitlab中配置SSH key1. 用笔记本打开 C:\Users\Administrator\\.ssh\id_rsa.pub,复制全部内容2. 打开Gitlab中 user se…

在Win10下使用AutoHotKey为软件指定默认输入法

引子 最近使用MathType较为频繁,然MathType每次打开都是系统默认的中文输入法,导致打公式时必须先切换成英文输入法才好使用,由此萌生了为其指定默认输入法的想法。 经验借鉴 通过在搜索引擎上检索后,我找到:根据不…

win10本地安装部署ClickHouse

ClickHouse可以在任何具有x86_64,AArch64或PowerPC64LE CPU架构的Linux,FreeBSD或Mac OS X上运行。 目前在win10系统上面运行,需要安装win10的ubuntu子系统。需要开通,勾选,如图。 勾选以后,直接在microso…

安装win10虚拟机

(1)依次点击【文件】、【新建虚拟机】 (2)选择【典型】,点击【下一步】 (3)选择【稍后安装操作系统】,点击【下一步】 (4)选择客户机操作系统为【Mi…

VMware创建Win10操作系统虚拟机

VMware创建Win10操作系统虚拟机 1. 安装VMware162. 下载Win10镜像3. 创建虚拟机4. 安装Win105. 安装VMware Tools工具 1. 安装VMware16 迅雷云链接:https://pan.xunlei.com/s/VNH9mkbxLqnyB_F_g0h73C_TA1?pwdsdi4# 2. 下载Win10镜像 百度云链接:http…

win 10 配置 Github ssh key

1、首先安装git,百度云盘下载的地址:http://pan.baidu.com/s/1jHZb838) 2、安装好以后打开:Git Bash 检查本机是否有ssh key设置 $ cd ~/.ssh 或cd .ssh 如果没有则提示: No such file or directory 如果有则进入~/.ssh路径下&a…

debian重启ssh服务_Win10自带的ssh客户端key权限设置

远程办公有一段时间了,ssh远程登录服务器是必不可少的。一般人可能会去找XShell,然后有人喜欢Putty,MobaXTerm之类。其实Win10已经自带了ssh客户端和服务端了,简单使用的话不用麻烦去下别的。这里看下ssh客户端的使用,…

Win10 | windows key 被禁用的解决方法

今天手贱按错了,用FnF6把windows热键锁了 当出现这个弹窗,顿感不妙 捣鼓了半个小时,发现起因和我一样的人 0 So,主流的方法都没解决我的问题,看着网上千篇一律的cv大法,很感慨 想搞个人话版&#xff0c…

Python实现小波变换去噪

python实现小波变换去噪 # coding gbk # 使用小波分析进行阈值去噪声,使用pywt.threshold import pywt import numpy as np import pandas as pd import matplotlib.pyplot as plt import mathdata np.linspace(1, 10, 10) print(data) # [ 1. 2. 3. 4. 5. 6. 7. 8.…

常用的图像去噪方法

常用的图像去噪方法: ①高斯滤波: 高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的 加权平均灰度值 去替代模板中心像素点的值。 1.高斯滤波是平滑线性滤波器,在对邻域内像素灰…