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.mzph.cn/diannao/63972.shtml

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

相关文章

Ubuntu安装Gitlab详细图文教程

1、环境准备 1.1、Ubuntu环境 Ubuntu24.04Sever版安装教程 1.2、更新系统 sudo apt update -y sudo apt-get update sudo apt-get upgrade 2、安装Nginx 2.1 安装nginx # 安装 apt install nginx -y 2.2 修改nginx配置⽂件 # 修改nginx配置 vim /etc/nginx/si…

使用Hydra库简化配置管理

使用Hydra库简化配置管理 简介 在现代软件开发中,配置管理是至关重要的。应用程序的灵活性和可维护性很大程度上取决于其如何处理配置。Hydra是一个由Facebook AI Research (FAIR) 开发的Python库,它旨在简化复杂应用的配置过程。Hydra使得开发者可以轻…

1. 机器学习基本知识(2)——机器学习分类

1.4 机器学习分类 1.4.1 训练监督 1. 监督学习:已对训练数据完成标记 分类:根据数据及其分类信息来进行训练,使模型能够对新的数据进行分类 回归:给出一组特征值来预测目标数值 2. 无监督学习:没有对训练数据进行任…

Jupyter Notebook 切换虚拟环境

方法 切换到需要添加到Jupyter Notebook中的虚拟环境,执行: python -m ipykernel install --name Jupyter Notebook中显示的虚拟环境名称如果遇到 [Errno 13] Permission denied: /usr/local/share/jupyter类似的权限问题,可能是没有对应的…

【游戏设计原理】7 - 加德纳的多元智能理论

虽然多元智能理论是对认知方式的分类,但它也可以为游戏设计提供丰富的思路和策略,帮助设计师创建更具吸引力、包容性和多样性的游戏。通过理解不同玩家的认知方式和优势,我们可以更精准地设计游戏的元素和玩法,使其能够吸引广泛的…

计算机网络技术基础:1.计算机网络的产生与发展

从1946年世界上第一台计算机ENIAC的诞生,计算机网络的发展大体可分为以下4个阶段。 一、第一代计算机网络——面向终端的计算机网络 第一代计算机网络也称面向终端的计算机网络,它是以主机为中心的通信系统。这样的系统中,除一台中心计算机&…

SAP MMPV报错MMPV_DATE_CHECK

异常提示:MMPV_DATE_CHECK检查失败,请参照NOTE 1082841。 解决方法: TCODE:SU3 在用户参数上增加:参数 MMPV_READ_NOTE 参数值:当天日期。

ionic capacitor JSValueEncodingContainer报错

try to clean the build folder. exit Xcode. upgrade your capacitor core libraries update cocoapods to 1.13.0 do “pod install --repo-udpdate” after that: ionic build --prodnpx cap updatenpx cap syncnpx cap open ios capacitor ios最低版本要求13 [Bug]:…

全面解读PPO算法:结合DeepSpeed Chat实现分析, Critic Loss的设计

全面解读PPO算法:结合DeepSpeed Chat实现分析 1. 什么是PPO? Proximal Policy Optimization (PPO) 是一种基于策略梯度的强化学习方法,属于 Actor-Critic 框架的改进算法。它的目标是稳定地优化策略,避免策略更新过于激进&#x…

【html 常用MIME类型列表】

本表仅列出了常用的MIME类型,完整列表参考文档。 浏览器通常使用 MIME 类型(而不是文件扩展名)来确定如何处理 URL,因此 Web 服务器在响应头中添加正确的 MIME 类型非常重要。 如果配置不正确,浏览器可能会曲解文件内容…

Flink CDC技术介绍

Flink CDC(Change Data Capture)是基于数据库的日志CDC技术,实现了全增量一体化读取的数据集成框架,可以高效地实现海量数据的实时集成。 Flink CDC是一种功能强大、灵活易用的数据集成框架,适用于多种实时数据处理场…

旋转位置编码的理解

这里写目录标题 高维情况下的旋转位置编码1. 词向量维度很大的概念2. 旋转位置编码在高维向量上的公式3. 实际例子:4 维词向量第一组 ( 1 , 0 ) (1, 0) (1,0) 的旋转第二组 \((0, 1)\) 的旋转旋转后完整的 4 维向量 4. 更高维的情况为什么要这样分组? 5…

uni-app之web-view组件 postMessage 通信【跨端开发系列】

🔗 uniapp 跨端开发系列文章:🎀🎀🎀 uni-app 组成和跨端原理 【跨端开发系列】 uni-app 各端差异注意事项 【跨端开发系列】uni-app 离线本地存储方案 【跨端开发系列】uni-app UI库、框架、组件选型指南 【跨端开…

机器学习辅助天线性能极限突破

电磁超构表面与天线技术的结合离不开三个尺度下对三个方面的考虑,即微观的单元、介观的排布、宏观的性能这三个尺度的分析、综合与调控。在单元设计层面,目前主要依靠经验和大规模数值迭代,耗时长、成功率不稳定、通用性较差;在阵…

如何持续优化呼叫中心大模型呼入机器人的性能?

如何持续优化呼叫中心大模型呼入机器人的性能? 原作者:开源呼叫中心FreeIPCC,其Github:https://github.com/lihaiya/freeipcc 持续优化呼叫中心大模型呼入机器人的性能是一个复杂而细致的过程,它涉及到数据、模型结构…

Deveco报错Only files in a module can be previewed

创建工程后需要看看预览的效果,却出现了这个错误 到Index.ets文件下重新构建工程 详细可以查询 鸿蒙报错(Only files in a module can be previewed)

安装Python库

安装Python库 一、pip安装参数--no-deps 更换下载源,一劳永逸 二、conda下载 一、pip安装 换源安装并且信任该下载源 pip install pipenv -i http://pypi.douban.com/simple --trusted-host pypi.douban.com参数 –no-deps ​ 有些 packages 会依赖一些其它的 p…

uniappp配置导航栏自定义按钮(解决首次加载图标失败问题)

1.引入iconfont的图标,只保留这两个文件 2.App.vue引入到全局中 import "./static/fonts/iconfont.css"3.pages.json中配置text为图标对应的unicode {"path": "pages/invite/invite","style": {"h5": {"…

19. 【.NET 8 实战--孢子记账--从单体到微服务】--记账模块--收支记录

在本篇文章中,我们将一起编写孢子记账的收支记录功能(CURD),同样我们只列出一个具体功能的实现,剩下的功能由读者实现。 一、 需求 需求如下: 编号需求说明1新增记录1.记录内容包括转换前金额、转换后金…

ubuntu22.04 使用crash

文章目录 前言一、apt 安装dbgsym vnlinux二、使用.ddeb包安装dbgsym vnlinux三、dbgsym发行版四、crash调试参考资料 前言 最近在适配 ubuntu系统,记录一下其crash的安装。 一、apt 安装dbgsym vnlinux # echo "deb http://ddebs.ubuntu.com $(lsb_release…