前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度属性图聚类的统一代码框架

深度属性图聚类的统一代码框架

原创
作者头像
Marigold
修改2023-05-08 15:43:10
6040
修改2023-05-08 15:43:10
举报
文章被收录于专栏:Marigold

个人博客:Marigold

代码仓库:A-Unified-Framework-for-Deep-Attribute-Graph-Clustering

Github主页:Marigoldwu

近年来,属性图聚类得到迅速发展,各种深度属性图聚类方法不断被提出。虽然大部分方法都是开源的,但遗憾的是这些代码并没有一个统一的框架,这使得研究人员不得不花费大量的时间修改代码来达到复现的目的。幸运的是,Liu等人 [Github主页:yueliu1999]将深度图聚类方法整理成开源代码仓库——Awesome-Deep-Graph-Clustering(ADGC)。他们提供了20多个数据集,并统一了数据集的格式。此外,他们列出了与深度图聚类相关的论文,并提供了源代码链接。值得一提的是,他们将深度图聚类的代码组织成rand-augmentation-model-clustering-visualization-utils结构,极大方便了初学者和研究者。在此,我谨代表我自己,向Liu等人的工作表示衷心的感谢和崇高的敬意。❤️

感谢以下作者的提供的开源代码(排名不分先后):

[ yueliu1999 | bdy9527| Tiger101010]

概述

我在ADGC的基础上重构了代码,让深度聚类的代码实现了更高的统一。具体来说,我重新设计了代码的架构,让你可以在我的框架中轻松运行不同模型的代码,并且提升了可扩展性。此外,我定义了一些工具类和函数来简化代码并使一些配置更加清晰。

该项目的框架如下:

  • main.py: 该框架的程序入口文件。
  • requirements.txt: 需要被安装的第三方库环境。
  • dataset: 该目录包含你所需要的数据集,其中子目录用数据集名称命名,存放的文件为特征文件、标签文件和邻接矩阵文件,分别命名为 {数据集名}_feat.npy{数据集名}_label.npy{数据集名}_adj.npy, 例如 acm_feat.npyacm_label.npyacm_adj.npy。此外,该目录还包含一个dataset_info.py文件,其中存放了数据集的相关信息。
  • module: 该目录包含了模型最常用的基础模块, 例如自动编码器(AE.py)、图卷积层(GCN.py)、图注意力层(GAT.py)等。
  • model: 该目录包含你想要运行的模型。目录格式为:子目录是以模型名称的大写字母命名的,其中包含两个文件,分别是model.py用于存储模型类,train.py用于训练模型。我们的框架会根据输出模型的名称,自动导入模型对应的训练模块。此外,预训练模型也存放在这里,并且目录格式为: pretrain_{模块名}_for_{模型名},该目录是完全小写的,其中存放一个train.py文件。例如,如果你想要预训练SDCN中的AE模块,你可以将其命名为pretrainae_for sdcn,存放在model中,其中只有一个train.py文件即可。
  • utils: 该目录包括一些工具类和函数。
    • load_data.py: 它包含加载用于训练的数据集的相关函数。
    • data_processor.py: 它包含数据存储类型转换以及其他变换的函数,例如numpy转torch、对称归一化等。
    • calculator.py: 它包含计算均值和标准差的函数。 该文件已经合并到utils.py中。
    • evalution.py: 它包含计算聚类指标的函数,例如ACC、NMI、ARI和F1_score。
    • formatter.py: 它包含对输入变量进行格式化输出的函数。 该文件已经合并到utils.py中。
    • logger.py: 它包含一个用于输出日志信息的日志类。
    • parameter_counter.py: 它包含统计模型参数量的函数。 该文件已经合并到utils.py中。
    • path_manager.py: 它包含根据需要将相对路径转化为绝对路径的函数。当然,如果不需要转换,也需要调用这个函数,因为该函数可以配置一些文件存储路径,例如日志存储路径、预训练参数文件存储路径、聚类可视化图像存储路径等。
    • plot.py: 它包含一个绘制聚类TSNE可视化以及保存图像的函数。稍后也会开发特征热图的图像绘制函数。
    • time_manager.py: 它包含一个用于记录模型耗时的时间类以及一个格式化时间的函数。
    • rand.py: 它包含设置随机数种子的函数。
    • utils.py: 它包含来自之前的文件中的工具函数,如来自formatter.py中的get_format_variables()
    • options.py: 它包含argparse对象。用于在命令行输入参数。
  • logs: 该目录用于存储日志输出文件,它的子目录用模型名称命名,日志文件用模型启动时间命名。
  • pretrain: 该目录用于存储预训练参数文件,它的子目录用pretrain_{模块名}命名,用数据集命名的参数文件存放在以模型名命名的目录下。
  • img: 该目录用于存储输出的图像,其子目录为clustering和heatmap。

快速上手

在将该项目克隆到本地后,可以根据以下步骤进行运行:

步骤1:检查环境或者直接运行requirements.txt安装第三方库。

代码语言:shell
复制
pip install -r requirements.txt

步骤2:准备数据集。如果你没有我们代码所需要的格式的数据集,可以在Liu的仓库中下载。 [yueliu1999 | Google Drive | Nutstore] 。然后将其解压放到dataset目录中。

步骤3:在命令行中进入main.py所在目录,并用python运行main.py文件。如果是在集成开发环境中可以直接运行main.py文件。

以训练DAEGC为例:

  1. 我们需要先预训练GAT模块:
代码语言:shell
复制
python main.py --pretrain --model pretrain_gat_for_daegc --dataset acm  --desc pretrain_the_GAT_for_DAEGC_on_acm
# or the simplified command:
python main.py -P -M pretrain_gat_for_daegc -S acm -D pretrain_the_GAT_for_DAEGC_on_acm
  1. 然后训练DAEGC:
代码语言:shell
复制
python main.py --model DAEGC --dataset cora -D Train_DAEGC_1_iteration_on_the_ACM_dataset
# or the simplified command:
python main.py -M DAEGC -S cora -D Train_DAEGC_1_iteration_on_the_ACM_dataset

以训练SDCN为例:

  1. 我们需要先预训练AE模块:
代码语言:shell
复制
python main.py --pretrain --model pretrain_ae_for_sdcn --dataset acm --desc pretrain_ae_for_SDCN_on_acm
# or simplified command:
python main.py -P -M pretrain_ae_for_sdcn -S acm -D pretrain_ae_for_SDCN_on_acm
  1. 然后训练SDCN:
代码语言:shell
复制
python main.py --model SDCN --dataset acm --desc Train_SDCN_1_iteration_on_the_ACM_dataset
# or simplified command:
python main.py -M SDCN -S acm -D Train_SDCN_1_iteration_on_the_ACM_dataset

以下是argparse中可以修改的参数:

参数

短选项

描述

类型/动作

默认值

--pretrain

-P

本次训练是否是预训练

"store_true"

False

--model

-M

所训练模型的名称,注意要与model目录中的对应。

str

SDCN

--dataset

-S

所训练的数据集的名称,注意要与dataset目录中的对应。

str

acm

--k

-K

非图数据集构造KNN时的k值。

int

None

--t

-T

如果模型需要矩阵M,比如DAEGC,可以指定t的值。

int

2

--loops

-L

训练次数。如果需要训练10次取均值,可以设置为10。

int

1

--root

-R

如果需要将相对路径设置为绝对路径,可以设置为根路径。

str

None

--tsne

-C

如果想要绘制聚类可视化结果,可以使用该选项。

"store_true"

False

--heatmap

-H

如果想要绘制模型学到的嵌入表示热图,可以使用该选项 。

"store_true"

False

步骤4:如果你成功运行代码,并且觉得该项目不错,给个star鼓励一下!:wink:

目前支持的模型

之后我会陆续更新其他模型代码。如果你很喜欢我的框架并希望让它更强大,可随时提交你的代码。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 快速上手
  • 目前支持的模型
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档