加入收藏 | 设为首页 | 会员中心 | 我要投稿 南通站长网 (https://www.0513zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 动态 > 正文

这个图聚类Python工具火了

发布时间:2021-04-07 11:23:24 所属栏目:动态 来源:互联网
导读:能亮点 这款工具叫作communities, 是一个Python库,用于图聚类问题的社群结构检测。 它支持 多种算法 ,包括: Louvain算法; Girvan-Newman算法; 层次聚类算法; 光谱聚类算法; Bron-Kerbosch算法。 更赞的是,communities还可以实现这些 算法的可视化

能亮点

这款工具叫作communities, 是一个Python库,用于图聚类问题的社群结构检测。

它支持多种算法,包括:

  • Louvain算法;
  • Girvan-Newman算法;
  • 层次聚类算法;
  • 光谱聚类算法;
  • Bron-Kerbosch算法。

更赞的是,communities还可以实现这些算法的可视化

具体了解一下~

导入算法并插入矩阵

这里以Louvain算法为例。

这是一种基于模块度的社群发现算法,也是贪心算法。

它根据顶点的共享边将顶点排列成社群结构,也就是说,它将节点分为几个社群,每个社群之间共享很少的连接,但是同一社群的节点之间共享许多连接。

最终,让整个社群网络呈现出一种模块聚集的结构,实现整个社群网络的模块度的最大化。

所以首先,我们需要构建一个表示无向图的邻接矩阵,可以加权,也可以不加权,矩阵为2Dnumpy数组。

n*n矩阵则表示有n个节点,矩阵的每个位置分别表示各节点之间边的关系,有边则为1,没有边则为0。

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

下来输出社群列表,每个社群即为一组节点。

实现可视化,并进行颜色编码

利用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算法的可视化,代码是这样的:

(编辑:南通站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!