这个图聚类Python工具火了:可对社群结构进行可视化、检测 | 开源
点击上方“视学算法”,选择加"星标"或“置顶”
重磅干货,第一时间送达
子豪 发自 凹非寺
量子位 报道 | 公众号 QbitAI
最近,又有一款Python可视化工具火了。
这一次,功能是针对图聚类问题的社群结构进行检测、可视化。
该项目的帖子在reddit上一经发布,就被顶到了“机器学习板块”的榜首。
一起来看看它究竟都能用来做什么吧~
功能亮点
这款工具叫作communities, 是一个Python库,用于图聚类问题的社群结构检测。
它支持多种算法,包括:
Louvain算法;
Girvan-Newman算法;
层次聚类算法;
光谱聚类算法;
Bron-Kerbosch算法。
更赞的是,communities还可以实现这些算法的可视化。
具体了解一下~
导入算法并插入矩阵
这里以Louvain算法为例。
这是一种基于模块度的社群发现算法,也是贪心算法。
它根据顶点的共享边将顶点排列成社群结构,也就是说,它将节点分为几个社群,每个社群之间共享很少的连接,但是同一社群的节点之间共享许多连接。
最终,让整个社群网络呈现出一种模块聚集的结构,实现整个社群网络的模块度的最大化。
所以首先,我们需要构建一个表示无向图的邻接矩阵,可以加权,也可以不加权,矩阵为2Dnumpy数组。
n*n矩阵则表示有n个节点,矩阵的每个位置分别表示各节点之间边的关系,有边则为1,没有边则为0。
然后,只需从communities.algorithms中导入算法并插入矩阵。
import numpy as np
from communities.algorithms import louvain_method
adj_matrix = np.array([[0, 1, 1, 0, 0, 0],[1, 0, 1, 0, 0, 0],[1, 1, 0, 1, 0, 0],[0, 0, 1, 0, 1, 1],[0, 0, 0, 1, 0, 1],[0, 0, 0, 1, 1, 0]])
communities, _ = louvain_method(adj_matrix)
# >>> [{0, 1, 2}, {3, 4, 5}]
接下来输出社群列表,每个社群即为一组节点。
实现可视化,并进行颜色编码
利用communities将图进行可视化,将节点分到社群中并进行颜色编码,还可以选择深色或浅色背景、保存图片、选择图片的分辨率等等 。
draw_communities(adj_matrix : numpy.ndarray, communities : list, dark : bool = False, filename : str = None, seed : int = 1)
其中各参数的具体含义为:
adj_matrix (numpy.ndarray):图的邻接矩阵;
dark (bool, optional (default=False)):如果为 True, 则绘图为深色背景,否则为浅色背景;
filename (str or None, optional (default=None)):通过 filename 路径可以将图另存为PNG格式; 设置 None 则是用交互方式显示图;
dpi (int or None, optional (default=None)):每英寸的点数,控制图像的分辨率;
seed (int, optional (default=2)):随机种子。
具体到Louvain算法的可视化,代码是这样的:
from communities.algorithms import louvain_method
from communities.visualization import draw_communities
adj_matrix = [...]
communities, frames = louvain_method(adj_matrix)
draw_communities(adj_matrix, communities)
动画呈现算法
communities 还可以动画呈现节点分配到社群的过程。
louvain_animation(adj_matrix : numpy.ndarray, frames : list, dark : bool = False, duration : int = 15, filename : str = None, dpi : int = None, seed : int = 2)
其中各参数的含义如下:
adj_matrix (numpy.ndarray):图的邻接矩阵;
frames (list):算法每次迭代的字典列表;
每个字典都有俩个键:“C”包含节点到社群的查找表,“Q”表示图的模块度数值;
此字典列表是 louvain_method的第二个返回值;
dark (bool, optional (default=False)):如果为 True, 则动画为深色背景和配色方案,否则为浅色方案;
duration (int, optional (default=15)):动画所需的持续时间,以秒为单位;
filename (str or None, optional (default=None)):通过filename 路径将动画存为GIF;设置None则以交互方式展示动画;
dpi (int or None, optional (default=None)):每英寸点数,控制动画的分辨率;
seed (int, optional (default=2)):随机种子。
例如,空手道俱乐部网络中Louvain算法的动画呈现:
from communities.algorithms import louvain_method
from communities.visualization import louvain_animation
adj_matrix = [...]
communities, frames = louvain_method(adj_matrix)
louvain_animation(adj_matrix, frames)
我们可以看到Louvain算法的动态过程:
首先扫描数据中的所有节点,将每个节点看做一个独立的社群;
接下来,遍历每个节点的邻居节点,判断是否将该节点加入邻居节点所在的社群,以提升模块度;
这一过程重复迭代,直到每一个节点的社群归属稳定;
最后,将所有在同一个社群的节点压缩成一个新节点,计算新节点的权重,直到整个图的模块度稳定。
大家可以通过文末链接,自行尝试一下其他算法~
此外,它还可以用于社群间邻接矩阵、拉普拉斯矩阵以及模块度矩阵等。
对于这款工具,不少网友发出“awesome”、“really cool!”等花式赞叹,表示正是自己需要的。
当然,也有网友提出疑问,例如:是否可以指定执行的迭代次数(例如:提前停止)?
开发者对此表示:不能,但是对于某些算法,可以指定要将图形划分为多少个社群。
作者简介
项目开发者Jonathan Shobrook,他目前是美国一家电商公司的软件工程师。
之前GitHub上的热门项目Rebound,也是出自他手,已经获得3.5k星。
更多信息可戳下方链接了解~
相关链接:
[1]https://github.com/shobrook/communities
[2]https://www.reddit.com/r/MachineLearning/comments/lozys9/p_i_made_communities_a_library_of_clustering/
— 完 —
本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。
点个在看 paper不断!
这个图聚类Python工具火了:可对社群结构进行可视化、检测 | 开源相关推荐
- Python 是怎么火起来的? 转载 2018年01月12日 00:00:00 133 图:Python 之父 Guido 正在设计 Python 语言,结果家里突然潜入一条大蟒蛇,一番激烈斗争,大
Python 是怎么火起来的? 转载 2018年01月12日 00:00:00 133 图:Python 之父 Guido 正在设计 Python 语言,结果家里突然潜入一条大蟒蛇,一番激烈斗争,大蟒 ...
- python图形化编程工具哪个好_mPython(图形化编程软件) V0.5.0 官方版
mPython 是一款针对Python 3编程语言的图形化编辑工具.支持函数,仿真.hex.python.blockly三种代码读写等功能.并可以与TPYBoard系类开发板配合使用,直接连接PC端进 ...
- python实现的基于NMF的多图聚类算法
python实现的基于NMF的多图聚类算法的封装 代码均由论文复现 文章目录 python实现的基于NMF的多图聚类算法的封装 前言 参考论文 一.NMF 二.Mjnmf 总结 前言 怕忘记干了这个事 ...
- 【Python】时间序列数据分析与预测之Python工具汇总
本文中总结了十多种时间序列数据分析和预测工具和python库,在我们处理时间序列项目时,可以翻开本文,根据需要选择合适的工具,将会事半功倍! 在处理时间序列项目时,数据科学家或 ML 工程师通常会使用 ...
- 21个有用的python工具
Python是最流行的编程语言之一. 它简单.强大,并且由一个致力于开源项目的社区驱动.Python的大量使用是它如此流行的原因; 您可以免费构建软件.开发Web服务.执行数据分析和可视化以及训练机器 ...
- 时间序列数据分析与预测之Python工具汇总
大家好,我是辰哥 本文中硬核总结了十多种时间序列数据分析和预测工具和python库,在我们处理时间序列项目时,可以翻开本文,根据需要选择合适的工具,将会事半功倍! 在处理时间序列项目时, ...
- python编程基础知识体系_最新版 17 幅思维导图:Python 编程之核心知识体系
原标题:最新版 17 幅思维导图:Python 编程之核心知识体系 导读:本文主要涵盖了 Python 编程的核心知识,展示了一系列思维导图,主要就 Python 核心基础知识进行了细致梳理.无论你是 ...
- python爬取淘宝商品做数据挖掘_Python 3爬虫 数据清洗与可视化实战 Python数据抓取技术 python3网络爬虫教程书籍 运用Python工具获取电商平台页面数据挖掘书籍...
A8 书 名:Python 3爬虫 数据清洗与可视化实战 作 译 者:零一,韩要宾,黄园园 出版时间:2018-03 千 字 数:200 版 次:01-01 页 数:212 开 ...
- python语言模型工具_Python工具整合,为程序员和新手准备的 8 大 Python 工具
Python 是一种开源编程语言,用于 Web 编程.数据科学.人工智能和许多科学应用.学习 Python 使程序员能够专注于解决问题,而不是专注于语法,其丰富的库赋予它完成伟大任务所需的力量. 1) ...
最新文章
- [Nodejs学习之旅2-1] 模块机制
- 日子过得真快,转眼就工作了4个月了
- Git - 使用指南
- UA MATH571B 试验设计VI 随机效应与混合效应1
- react使用setSetat设置多级对象的值
- unity3d 不规则外发光描边_Shader案例之内发光和边缘泛光效果
- 面向过程的ado建造者模式
- Datawha组队——Pandas(下)综合练习(打卡)
- python合并视频和音频_真没想到,Python 还能实现 5 毛特效
- Android用外部应用打开文件,Android N 以上使用其他应用打开文件 FileProvider
- 用Siri显示二维码, iOS11, INGetVisualCodeIntent
- selnium 判断页面加载完成_Selenium_等待页面加载完毕
- 贪吃蛇c语言代码 vc++6.0,贪吃蛇代码-C语言版-VC++6.0
- html语言ppt,htmlppt课件
- 用c语言编写定时器程序,C语言怎么实现定时器
- wgc84 笛卡尔_WGS84椭球下的UTM坐标与Clarke80椭球下的兰勃特坐标转换方法研究
- 算法(5)动态规划法
- RSA生成公私钥并加解密
- 网络编程--TCP实例
- 区块链科普系列之1—区块链的由来
热门文章
- 错误:Error #2032解决方案
- 【组队学习】【23期】Datawhale编程实践(区块链)
- Hadoop 三大发行版本
- Python + 爬虫:可视化大屏帮你选粽子
- 认知智能再突破,阿里 18 篇论文入选 AI 顶会 KDD
- 大促下的智能运维挑战:阿里如何抗住“双11猫晚”?
- 2020,国产AI开源框架“亮剑”TensorFlow、PyTorch
- 华为腾讯百度众安微众360大咖齐聚,2019中国区块链开发者大会首批议程曝光!...
- 继AutoML后,第四范式发布软硬一体化AI集成系统SageOne
- 2018年Python开源项目Top100!只在这里!