首页 科技 正文

这个图聚类Python工具火了:可视化和检测社区结构|开源。

子豪 只想说 凹非寺量子位 报导 | 微信公众号 QbitAI

近期,又有一款Python数据分析工具爆火。

这一次,作用是对于图聚类算法难题的社群构造开展检验、数据可视化。

|开源。 社群 节点 算法 矩阵 共享 动画 第1张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第1张">|开源。 社群 节点 算法 矩阵 共享 动画 第1张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第1张">|开源。 社群 节点 算法 矩阵 共享 动画 第1张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第1张">|开源。 社群 节点 算法 矩阵 共享 动画 第1张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第1张">|开源。 社群 节点 算法 矩阵 共享 动画 第1张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第1张">|开源。 社群 节点 算法 矩阵 共享 动画 第1张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第1张">|开源。 社群 节点 算法 矩阵 共享 动画 第1张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第1张">|开源。 社群 节点 算法 矩阵 共享 动画 第1张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第1张">|开源。 社群 节点 算法 矩阵 共享 动画 第1张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第1张">

此项目地贴子在reddit上一经公布,就被顶到了“深度学习版块”的第一。

|开源。 社群 节点 算法 矩阵 共享 动画 第2张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第2张">|开源。 社群 节点 算法 矩阵 共享 动画 第2张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第2张">|开源。 社群 节点 算法 矩阵 共享 动画 第2张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第2张">|开源。 社群 节点 算法 矩阵 共享 动画 第2张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第2张">|开源。 社群 节点 算法 矩阵 共享 动画 第2张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第2张">|开源。 社群 节点 算法 矩阵 共享 动画 第2张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第2张">|开源。 社群 节点 算法 矩阵 共享 动画 第2张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第2张">|开源。 社群 节点 算法 矩阵 共享 动画 第2张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第2张">|开源。 社群 节点 算法 矩阵 共享 动画 第2张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第2张">

一起来看一下它到底都能用于干什么吧~

作用闪光点

这款专用工具称为communities, 是一个Python库,用以图聚类算法难题的社群构造检验。

它适用多种多样算法,包含:

Louvain算法;Girvan-Newman算法;层次聚类算法;光谱聚类算法;Bron-Kerbosch算法。更赞的是,communities还能够完成这种算法的数据可视化。

实际了解一下~

导进算法并插进矩阵

这儿以Louvain算法为例子。

它是一种根据控制模块度的社群发觉算法,也是贪婪算法。

它依据端点的共享边将端点排成社群构造,换句话说,它将节点分成好多个社群,每一个社群中间共享非常少的联接,可是同一社群的节点中间共享很多联接。

最后,让全部社群互联网展现出一种控制模块集聚的构造,完成全部社群互联网的控制模块度的利润最大化。

因此 最先,大家必须搭建一个表明无向图的临接矩阵,能够权重计算,还可以不权重计算,矩阵为3Dnumpy二维数组。

n*n矩阵则表明有n个节点,矩阵的每一个部位各自表明各节点中间边的关联,有边则为1,沒有边则为0。

随后,只需从communities.algorithms中导进算法并插进矩阵。

|开源。 社群 节点 算法 矩阵 共享 动画 第3张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第3张">|开源。 社群 节点 算法 矩阵 共享 动画 第3张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第3张">|开源。 社群 节点 算法 矩阵 共享 动画 第3张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第3张">|开源。 社群 节点 算法 矩阵 共享 动画 第3张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第3张">|开源。 社群 节点 算法 矩阵 共享 动画 第3张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第3张">|开源。 社群 节点 算法 矩阵 共享 动画 第3张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第3张">|开源。 社群 节点 算法 矩阵 共享 动画 第3张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第3张">|开源。 社群 节点 算法 矩阵 共享 动画 第3张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第3张">|开源。 社群 节点 算法 矩阵 共享 动画 第3张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第3张">

下面輸出社群目录,每一个社群即是一组节点。

完成数据可视化,并开展颜色编码

运用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算法的数据可视化,编码是那样的:

|开源。 社群 节点 算法 矩阵 共享 动画 第4张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第4张">|开源。 社群 节点 算法 矩阵 共享 动画 第4张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第4张">|开源。 社群 节点 算法 矩阵 共享 动画 第4张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第4张">|开源。 社群 节点 算法 矩阵 共享 动画 第4张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第4张">|开源。 社群 节点 算法 矩阵 共享 动画 第4张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第4张">|开源。 社群 节点 算法 矩阵 共享 动画 第4张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第4张">|开源。 社群 节点 算法 矩阵 共享 动画 第4张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第4张">|开源。 社群 节点 算法 矩阵 共享 动画 第4张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第4张">|开源。 社群 节点 算法 矩阵 共享 动画 第4张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第4张">

|开源。 社群 节点 算法 矩阵 共享 动画 第5张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第5张">|开源。 社群 节点 算法 矩阵 共享 动画 第5张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第5张">|开源。 社群 节点 算法 矩阵 共享 动画 第5张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第5张">|开源。 社群 节点 算法 矩阵 共享 动画 第5张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第5张">|开源。 社群 节点 算法 矩阵 共享 动画 第5张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第5张">|开源。 社群 节点 算法 矩阵 共享 动画 第5张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第5张">|开源。 社群 节点 算法 矩阵 共享 动画 第5张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第5张">|开源。 社群 节点 算法 矩阵 共享 动画 第5张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第5张">|开源。 社群 节点 算法 矩阵 共享 动画 第5张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第5张">

动画展现算法

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算法的动画展现:

|开源。 社群 节点 算法 矩阵 共享 动画 第6张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第6张">|开源。 社群 节点 算法 矩阵 共享 动画 第6张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第6张">|开源。 社群 节点 算法 矩阵 共享 动画 第6张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第6张">|开源。 社群 节点 算法 矩阵 共享 动画 第6张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第6张">|开源。 社群 节点 算法 矩阵 共享 动画 第6张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第6张">|开源。 社群 节点 算法 矩阵 共享 动画 第6张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第6张">|开源。 社群 节点 算法 矩阵 共享 动画 第6张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第6张">|开源。 社群 节点 算法 矩阵 共享 动画 第6张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第6张">|开源。 社群 节点 算法 矩阵 共享 动画 第6张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第6张">

|开源。 社群 节点 算法 矩阵 共享 动画 第7张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第7张">|开源。 社群 节点 算法 矩阵 共享 动画 第7张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第7张">|开源。 社群 节点 算法 矩阵 共享 动画 第7张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第7张">|开源。 社群 节点 算法 矩阵 共享 动画 第7张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第7张">|开源。 社群 节点 算法 矩阵 共享 动画 第7张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第7张">|开源。 社群 节点 算法 矩阵 共享 动画 第7张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第7张">|开源。 社群 节点 算法 矩阵 共享 动画 第7张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第7张">|开源。 社群 节点 算法 矩阵 共享 动画 第7张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第7张">|开源。 社群 节点 算法 矩阵 共享 动画 第7张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第7张">

我们可以见到Louvain算法的动态性全过程:

最先扫描仪数据信息中的全部节点,将每一个节点看作一个单独的社群;下面,解析xml每一个节点的隔壁邻居节点,分辨是不是将该节点添加隔壁邻居节点所属的社群,以提高控制模块度;这一全过程反复迭代更新,直至每一个节点的社群所属平稳;最终,将全部在同一个社群的节点转化成一个新节点,测算新节点的权重值,直至全部图的控制模块度平稳。大伙儿能够根据文尾连接,自主试着一下别的算法~

除此之外,它还能够用以社群间临接矩阵、拉普拉斯矩阵及其控制模块度矩阵等。

针对这款专用工具,许多网民传出“awesome”、“really cool!”等花样赞美,表明恰好是自身必须的。

自然,也是有网民明确提出疑惑,比如:是不是能够特定实行的迭代更新频次(比如:提早终止)?

开发人员对于此事表明:不可以,可是针对一些算法,能够特定要将图型区划为多少个社群。

|开源。 社群 节点 算法 矩阵 共享 动画 第8张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第8张">|开源。 社群 节点 算法 矩阵 共享 动画 第8张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第8张">|开源。 社群 节点 算法 矩阵 共享 动画 第8张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第8张">|开源。 社群 节点 算法 矩阵 共享 动画 第8张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第8张">|开源。 社群 节点 算法 矩阵 共享 动画 第8张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第8张">|开源。 社群 节点 算法 矩阵 共享 动画 第8张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第8张">|开源。 社群 节点 算法 矩阵 共享 动画 第8张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第8张">|开源。 社群 节点 算法 矩阵 共享 动画 第8张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第8张">|开源。 社群 节点 算法 矩阵 共享 动画 第8张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第8张">

批注

|开源。 社群 节点 算法 矩阵 共享 动画 第9张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第9张">|开源。 社群 节点 算法 矩阵 共享 动画 第9张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第9张">|开源。 社群 节点 算法 矩阵 共享 动画 第9张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第9张">|开源。 社群 节点 算法 矩阵 共享 动画 第9张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第9张">|开源。 社群 节点 算法 矩阵 共享 动画 第9张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第9张">|开源。 社群 节点 算法 矩阵 共享 动画 第9张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第9张">|开源。 社群 节点 算法 矩阵 共享 动画 第9张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第9张">|开源。 社群 节点 算法 矩阵 共享 动画 第9张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第9张">|开源。 社群 节点 算法 矩阵 共享 动画 第9张" alt="这个图聚类Python工具火了:可视化和检测社区结构|开源。 社群 节点 算法 矩阵 共享 动画 第9张">

新项目开发人员Jonathan Shobrook,他现阶段是英国一家电子商务公司的前端工程师。

以前GitHub上的受欢迎新项目Rebound,也是源于他手,早已得到3.8k星。

其他信息可戳下边连接掌握~

[1]https://github.com/shobrook/communities

https://www.reddit.com/r/MachineLearning/comments/lozys9/p_i_made_communities_a_library_of_clustering/

非特殊说明,本文由原创资讯网原创或收集发布。

转载请注明本文地址:http://www.acewise.org/kj/2260.html