MATLAB图卷积神经网络GCN处理分子数据集节点分类研究

全文链接:https://tecdat.cn/?p=38570

本文主要探讨了如何利用图卷积网络(GCN)对图中的节点进行分类。介绍了相关的数据处理、模型构建、训练及测试等环节,通过对分子数据集的操作实践,展示了完整的节点分类流程,并对模型的效果进行了多方面评估,旨在为相关领域的研究与应用提供参考点击文末“阅读原文”获取完整代码数据)。

图卷积网络(GCN)是卷积神经网络的一种变体,在处理图结构数据的节点分类任务中有着重要应用。例如在化学领域,给定分子结构(以图表示化学键),可以利用GCN预测分子中原子的类型(如碳、氧等)。本文以数据集为例,详细阐述基于GCN的节点分类实现过程。

数据准备

(一)数据集下载与加载

首先从指定网址下载数据集,该数据集包含碳、氢、氮、氧和硫这五种不同的原子。通过以下代码实现下载与初步处理:

if ~exist(data_file,"file"):mkdir(output_folder)

加载下载好的MAT文件中的数据,其包含多个不同的数组,本文主要使用代表库仑矩阵的X数组和代表每个原子原子序数的Z数组,代码如下:

data = load(data_file)

(二)图数据预处理

从加载的数据结构中提取库仑数据和原子序数,并进行相应变换。

为了将训练数据中的库仑矩阵转换为邻接矩阵。之后对部分数据进行可视化展示,查看分子的相关情况,像提取未填充的邻接矩阵、将原子序数转换为符号并绘图等,代码如下:

nexttileplot(G,NodeLabel=symbols,Layout="force")

9226586a547d52d5275dd80ccd032172.png


点击标题查阅往期内容

cfe2b9bccca844f5698333092326aa0b.jpeg

R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)

outside_default.png

左右滑动查看更多

outside_default.png

01

96cc4bfaa74c8b8e22a2dbc0e80efc1d.png

02

10c2fa7da7c5a1b0e265dc887b0fdd9a.png

03

85d649303dda36904febd3e77ed13db6.png

04

b143f6458cf99db130139f2a4d7013cf.png

利用直方图可视化各标签类别的频率,代码如下:

figure
histogram(categorical(atomicSymbol(atom_data)))

cebb19747b3cc6b704b83a85d8498abb.png
对数据进行划分,分为训练集、验证集和测试集,分别包含80%、10%和10%的数据。

模型构建

(一)深度学习模型定义

定义的深度学习模型输入为邻接矩阵A和特征矩阵X,输出分类预测结果。模型是一系列形如 Zl+1=σl(D^−1/2A^D^−1/2ZlWl)+Zl的操作组合,其中涉及激活函数、权重矩阵等不同元素。

(二)模型参数初始化

创建结构来存放模型参数,并利用函数(本文附属文件)初始化各乘法操作的可学习权重:

parameters = struct()
num\_hidden\_feature_maps = 32

(三)模型相关函数定义

创建函数,其输入模型参数、特征数据和邻接矩阵,返回预测结果;输入模型参数、特征数据、邻接矩阵以及独热编码目标,返回损失、损失相对于参数的梯度和网络预测;另外还有函数,它们各自在模型的训练、预测等环节发挥重要作用。

模型训练

设定训练轮数为1500轮,学习率为0.01,每300轮验证一次网络。初始化Adam相关参数,将训练和验证特征数据转换为特定对象格式,若有可用GPU则将数据转换到GPU上进行训练,同时将训练和验证标签转换为独热编码向量,并初始化训练进度监测对象。然后利用自定义训练循环训练模型,在每一轮中进行模型损失和梯度评估、更新网络参数、更新训练绘图以及按要求验证网络等操作:

num_epochs = 1500
learn_rate = 0.01
validation_frequency = 300
trailing_avg = \[\]
trailing\_avg\_sq = \[\]

5db1a6f7796b4a72f68ffef176fb0256.png

模型测试与预测

(一)模型测试

使用测试数据对模型进行测试,先按照训练和验证数据的处理步骤预处理测试数据,将测试特征数据转换为相应对象格式,利用模型进行预测并将概率转换为分类标签,最后计算准确率,还通过混淆矩阵等方式可视化模型的预测情况,评估模型基于类别精度和召回率等指标的表现。

计算混淆矩阵:

figure
cm = confusionchart(labels\_test,Y\_test,

6c5c4b2826e14c1ea291e1a2cab9e3d4.png

(二)新数据预测

利用函数对未标记数据进行预测,选择测试数据的前几个观测值简单示例,可视化预测结果,将预测结果作为节点标签绘制分子的图表示:

num\_observations\_new = 4
adjacency\_data\_new = adjacency\_data\_test\[:,:,1:num\_observations\_new\]

4b613b960da80c089896b261a7aece0d.png

总结

本文通过对数据集完整的处理、基于图卷积网络的模型构建、训练及测试等流程展示,呈现了图中节点分类任务的实现过程及相关方法应用。结果表明模型在该任务中有一定的准确率等表现,后续可进一步探索优化模型结构、改进数据处理方式等方面,以提升模型在节点分类任务中的性能,更好地应用于如化学分子结构分析等诸多领域。

参考文献

[1] Kipf, Thomas N., and Max Welling. “Semi-Supervised Classification with Graph Convolutional Networks.” Paper presented at ICLR 2017, Toulon, France, April 2017.
[2] Blum, Lorenz C., and Jean-Louis Reymond. “970 Million Druglike Small Molecules for Virtual Screening in the Chemical Universe Database GDB-13.” Journal of the American Chemical Society 131, no. 25 (July 1, 2009): 8732–33. https://doi.org/10.1021/ja902302h.
[3] Rupp, Matthias, Alexandre Tkatchenko, Klaus-Robert Müller, and O. Anatole von Lilienfeld. “Fast and Accurate Modeling of Molecular Atomization Energies with Machine Learning.” Physical Review Letters 108, no. 5 (January 31, 2012): 058301. https://doi.org/10.1103/PhysRevLett.108.058301.

622b04101fab9c147c3a6ef8d6ab7369.jpeg

本文中分析的数据、代码分享到会员群,扫描下面二维码即可加群! 

f117bae4565a149b35742e711a1c7478.png


资料获取

在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。

84877ba5aa81fd9c8ff67abf8b6e77ad.jpeg

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《MATLAB图卷积网络GCN处理分子数据集节点分类研究》。

点击标题查阅往期内容

PYTHON TENSORFLOW 2二维卷积神经网络CNN对图像物体识别混淆矩阵评估|数据分享

R语言深度学习卷积神经网络 (CNN)对 CIFAR 图像进行分类:训练与结果评估可视化

R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)

MATLAB中用BP神经网络预测人体脂肪百分比数据

Python中用PyTorch机器学习神经网络分类预测银行客户流失模型

R语言实现CNN(卷积神经网络)模型进行回归数据分析

SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型

【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析

Python使用神经网络进行简单文本分类

R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析

R语言基于递归神经网络RNN的温度时间序列预测

R语言神经网络模型预测车辆数量时间序列

R语言中的BP神经网络模型分析学生成绩

matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类

R语言实现拟合神经网络预测和结果可视化

用R语言实现神经网络预测股票实例

使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测

python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译

用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

781dd4e4a4f570911bf7affadd35df62.jpeg

f6f249d833262cf0d25ebd3bbf34352a.png

1308ac519b778606c8c8a1c0f82ff7be.png

df3cec705896cb0fa107627389042982.jpeg

292a89cb3b728348cd412c2d7bc95e35.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/490018.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp中vuex(全局共享)的应用

一、Vuex概述 1.1 官方解释 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。 它采用集中式存储管理 应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化 - Vuex 也集成到 Vue 的官方调试工具 devtools extension,提供了诸…

华为云服务器搭建基于LNMP部署wordpress

Ubuntu系统搭建过程目录 一、检查环境1.1 检查是否安装Nginx1.2 检查是否安装Mysql1.3 检查是否安装PHP二、更新软件包以及安装所需要的依赖 三、安装Nginx3.1 下载并解压nginx3.2. 编译安装3.3 启动和停止和测试3.4 创建服务脚本3.5 Nginx目录 四、安装Mysql4.1 安全安装配置4…

ElasticSearch01-概述

零、文章目录 ElasticSearch01-概述 1、Elastic Stack (1)简介 官网地址:https://www.elastic.co/cn/ELK是一个免费开源的日志分析架构技术栈总称,包含三大基础组件,分别是Elasticsearch、Logstash、Kibana。但实际…

Python学习(二)—— 基础语法(上)

目录 一,表达式和常量和变量 1.1 表达式 1.2 变量 1.3 动态类型特性 1.4 输入 二,运算符 2.1 算术运算符 2.2 关系运算符 2.3 逻辑运算符 2.4 赋值运算符 2.5 练习 三,语句 3.1 条件语句 3.2 while循环 3.3 for循环 四&#…

Idea汉化插件Datagrip汉化插件

汉化插件 ‍ ‍ Chinese (Simplified) Language Pack / 中文语言包 ‍ 插件地址 ‍ 安装完了之后,如果还不是中文的怎么办 ‍ 需要手动设置 Seetings -> Appearance & Behavior -> System Settings -> Language and Region -> Language 修改为 [ Chi…

ansible 自动化运维工具(三)playbook剧本

目录 Playbook的定义 Playbook组成 Playbook命令 Playbook剧本编写格式 基本组件 Handlers处理器 tags标签 Facts组件 Register:注册变量 Debug模块 Playbook循环 With_items循环 With_dict循环(字典循环) With_nested循环&…

12.2【JAVA EXP4]next.js的各种问题,DEBUG,前端补强,前后端交互,springSecurity ,java 配置,h2数据库

在服务器组件中使用了 useState 这样的 React Hook。useState 只能在客户端组件中使用,而不能在服务器组件中使用。Next.js 的新架构(App Router)中,默认情况下,页面和布局组件是服务器组件,因此不能直接使…

Cursor重置机器码-解决Too many free trials.

参考文章:如何绕过Cursor的机器绑定限制 前言 在前面这篇文章无限使用Cursor指南中,我提到使用 无限邮箱 或者 删除账号并重新注册 的方法,来无限使用Cursor免费版。但是当在本机登录过3个账号后,就会报这个“Too many free tria…

【PlantUML系列】部署图(七)

一、部署图的组成部分 节点(Node):使用node关键字定义一个节点,节点可以是服务器、数据库或其他硬件设备。组件(Component):使用component关键字定义一个组件,组件可以是软件模块或服…

qt QCommandLineParser详解

1、概述 QCommandLineParser是Qt框架中提供的一个类,专门用于解析命令行参数。它简化了命令行参数的处理过程,使得开发者能够轻松定义、解析和验证命令行选项和参数。QCommandLineParser适用于需要从命令行获取输入的控制台应用程序,以及需要…

青少年夏令营管理系统的设计与开发(社团管理)(springboot+vue)+文档

💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

vue3-tp8-Element:对话框实现

效果 参考框架 Dialog 对话框 | Element Plus 具体实现 一、建立view页面 /src/views/TestView.vue 二、将路径写入路由 /src/router/index.js import { createRouter, createWebHistory } from vue-router import HomeView from ../views/HomeView.vueconst router create…

【鸿睿创智开发板试用】移植OpenCV 4到OpenHarmony 4.1

目录 目录 引言 编译系统镜像 (1) 下载代码后解压SDK (2) 下载docker镜像   (3) 编译OH 编译OpenCV 下载OpenCV源代码 构建编译配置文件 执行编译命令 安装库和头文件 测试 结语 引言 最近有个需求是在基于RK3568的OpenHarmony 4.1系统中使用OpenCV&#xff0c…

TimesFM(Time Series Foundation Model)时间序列预测的数据研究(3)

前一篇完成了 TimesFM 的运行 TimesFM(Time Series Foundation Model)安装(2)-CSDN博客文章浏览阅读520次,点赞13次,收藏24次。决定在 小红帽ubuntu UBUNTU安装 timesFM在 ide.cloud.tencent.com 的环境上…

【潜意识Java】深入理解 Java 面向对象编程(OOP)

目录 什么是面向对象编程(OOP)? 1. 封装(Encapsulation) Java 中的封装 2. 继承(Inheritance) Java 中的继承 3. 多态(Polymorphism) Java 中的多态 4. 抽象&…

三、汇总统计

1.SUM、COUNT、AVERAGE 注意:count函数是计算区域中包含数字的单元格的个数,以上案例中两个空白单元格和一个中文列标题都是没有计算在内的。 平均函数AVERAGE也是按照17进行求平均值的。所以在使用平均值的函数时候,可以根据实际情况看是…

EXCEL的各种图形,统计图形

目录 0 EXCEL的各种图形,统计图形 1 统计图形 / 直方图 / 其实叫 频度图 hist最合适(用原始数据直接作图) 1.1 什么是频度图 1.2 如何创建频度图,一般是只选中1列数据(1个数组) 1.3 如何修改频度图的宽度 1.4 hist图的一个特…

基于Llamaindex的网页内容爬取实战

目的 本文不关注如何解析网页 html 元素和各种 python 爬虫技术,仅作为一种网页数据的预处理手段进行研究。Llamaindex 也并不是爬虫技术的集大成者,使用它是为了后续的存查一体化。 安装依赖 pip install llama-index-readers-web # pip install llam…

debian12学习笔记

前置条件 基于debian12官网的qcow2格式文件进行操作 安装ssh 登录虚拟机后安装ssh服务端 apt install openssh-server配置国内源 新增/etc/apt/sources.list.d/tsinghua.list 使用清华大学的源 https://www.cnblogs.com/shanhubei/p/18104430 deb https://mirrors.tuna.t…

鲲鹏麒麟安装Kafka-v1.1.1

因项目需要在鲲鹏麒麟服务器上安装Kafka v1.1.1,因此这里将安装配置过程记录下来。 环境说明 # 查看系统相关详细信息 [roottest kafka_2.12-1.1.1]# uname -a Linux test.novalocal 4.19.148 #1 SMP Mon Oct 5 22:04:46 EDT 2020 aarch64 aarch64 aarch64 GNU/Li…