Python基于TensorFlow实现Transformer分类模型(Transformer分类算法)项目实战

news2024/9/21 22:59:20

说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。

1.项目背景

随着深度学习技术的发展,自然语言处理(NLP)领域取得了显著的进步。传统的NLP模型,如循环神经网络(RNNs)和长短时记忆网络(LSTMs),虽然在许多任务中表现出色,但在处理长距离依赖关系时存在局限性。此外,这些模型在训练过程中需要按顺序处理输入序列,这限制了并行处理的能力,进而影响了模型训练的速度和效率。

为了解决这些问题,Google的研究人员提出了Transformer模型,这是一种全新的架构,摒弃了循环结构,转而采用自注意力机制(Self-Attention Mechanism)。

本项目旨在利用TensorFlow框架实现一个基于Transformer架构的分类模型。通过对Transformer模型的学习和实践,我们可以更好地理解自注意力机制的工作原理,并掌握如何利用这种强大的工具来解决实际问题。

通过这个项目,不仅可以提升参与者在深度学习领域的技术水平,还可以帮助他们在实际工作中更好地应对复杂的数据处理和模型训练任务。此外,掌握Transformer模型的应用也为将来开发更高级的语言处理系统奠定了坚实的基础。

本项目使用Python基于TensorFlow实现Transformer分类模型(Transformer分类算法)项目实战。   

2.数据获取

本次建模数据来源于网络(本项目撰写人整理而成),数据项统计如下:

编号 

变量名称

描述

1

x1

2

x2

3

x3

4

x4

5

x5

6

x6

7

x7

8

x8

9

x9

10

x10

11

y

标签

数据详情如下(部分展示):

3.数据预处理

3.1 用Pandas工具查看数据

使用Pandas工具的head()方法查看前五行数据:

从上图可以看到,总共有11个字段。

关键代码:

3.2 缺失值统计

使用Pandas工具的info()方法统计每个特征缺失情况:

从上图可以看到,数据不存在缺失值,总数据量为2000条。

关键代码:  

3.3 变量描述性统计分析

通过Pandas工具的describe()方法来来统计变量的平均值、标准差、最大值、最小值、分位数等信息:

关键代码如下:

4.探索性数据分析

4.1 y变量分类柱状图

用Pandas工具的value_counts().plot()方法进行统计绘图,图形化展示如下:

从上面图中可以看到,分类为0和1的样本,数量基本一致。

4.2 y变量类型为1 x1变量分布直方图

通过Matpltlib工具的hist()方法绘制直方图:

从上图可以看出,y=1的数据主要集中在-3到3之间。

4.3 相关性分析

通过Pandas工具的corr()方法和seaborn工具的heatmap()方法绘制相关性热力图:

从图中可以看到,正数为正相关,负数为负相关,绝对值越大相关性越强。

5.特征工程

5.1 建立特征数据和标签数据

y为标签数据,除 y之外的为特征数据。关键代码如下:

5.2 数据集拆分

数据集集拆分,分为训练集和测试集,80%训练集和20%测试集。关键代码如下:

5.3 数据归一化

关键代码如下:

5.4 数据样本增维

数据样本增加维度后的数据形状:

6.构建Transformer分类模型

主要使用基于Transformer分类模型分类算法,用于目标分类。  

6.1 构建模型

编号

模型名称

参数

1

Transformer分类模型

d_model = 10  

2

num_heads = 20  

3

epochs=100

6.2 模型摘要信息

6.3 模型网络结构

6.4 模型训练集测试集损失和准确率曲线图 

7.模型评估

7.1 评估指标及结果 

评估指标主要包括准确率、查准率、召回率、F1分值等等。

模型名称

指标名称

指标值

测试集

Transformer分类模型

准确率

0.7875

查准率

 0.7137

召回率

0.9381

F1分值

 0.8107

从上表可以看出,F1分值为0.8107,说明此模型效果良好。

关键代码如下:  

7.2 分类报告

模型的分类报告:

从上图可以看到,分类类型为0的F1分值为0.76;分类类型为1的F1分值为0.81;整个模型的准确率为0.79。

7.3 混淆矩阵

从上图可以看出,实际为0预测不为0的 有73个样本;实际为1预测不为1的 有12个样本,整体预测准确率良好。

8.结论与展望

综上所述,本项目采用了基于TensorFlow实现Transformer分类模型,最终证明了我们提出的模型效果良好。 

# y=1样本x1变量分布直方图
fig = plt.figure(figsize=(8, 5))  # 设置画布大小
plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置中文显示
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
data_tmp = df.loc[df['y'] == 1, 'x1']  # 过滤出y=1的样本
# 绘制直方图  bins:控制直方图中的区间个数 auto为自动填充个数  color:指定柱子的填充色
plt.hist(data_tmp, bins='auto', color='g')  # 绘图
plt.xlabel('x1')  # 设置x轴名称
plt.ylabel('数量')  # 设置y轴名称
plt.title('y=1样本x1变量分布直方图')  # 设置标题名称
plt.show()  # 展示图片

 
# 获取方式:
 
# 项目实战合集导航:
 
# https://docs.qq.com/sheet/DTVd0Y2NNQUlWcmd6?tab=BB08J2
 
# https://item.taobao.com/item.htm?ft=t&id=834220671533
 
 
print('***********************查看训练集的形状**************************')
print(X_train.shape)  # 查看训练集的形状

X_test = layers.Lambda(lambda X_test: K.expand_dims(X_test, axis=-1))(X_test)  # 增加维度
print('***********************查看测试集的形状**************************')
print(X_test.shape)  # 查看测试集的形状

 
'欢迎关注下方公众号,谢谢'

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

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

相关文章

人工智能开发实战推荐算法应用解析

内容导读 个性化推荐思路推荐算法分类推荐效果评估 一、个性化推荐思路 推荐系统能为你提供个性化的智能服务,是基于以下事实认知:人们倾向于喜欢那些与自己喜欢的东西相似的其它物品,或倾向于与自己趣味相投的人有相似的爱好,…

9.安卓逆向-安卓开发基础-安卓四大组件2

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于:图灵Python学院 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。 工…

mysql为什么建议创建字段的时候not null

相信大家在建表或者给表新加字段的时候,一些老司机们都会建议我们,字段要定义为not null,原因呢是一是占用存储空间,另一个是避免出现一些意料之外的错误。当然针对这个问题,大家可能也会在网上去搜下,不过…

C语言中的一些小知识(三)

一、你了解printf()吗? 你知道下面代码的输出结果吗? int a123; printf("%2d \n",a); printf() 函数是 C 语言中用于格式化输出的标准函数,它允许你将数据以特定的格式输出到标准输出设备(通常是屏幕)。p…

20240921全国计算机二级Python考试(大头博士计算二级)

一、背景需求: 20240921我在上海应用技术大学44号楼考场参加2024年9月的全国计算机二级(Python语言程序设计)考试。 时隔多年,再次来到大学校园,恍若隔世 扫码找考场在哪里 考场须知 1、进考场,先刷身份证…

有关elementui form验证问题,有值却仍然显示不通过

参考链接 有关elementui form验证问题,有值却仍然显示不通过 - 一棵写代码的柳树 - 博客园 需要保证表单上的 :model" "和prop" "对应的属性相同 el-form 绑定数据:model 和 规则:rules input 绑定 数据表单里的数据 其父组件提供校验所绑定的…

Mybatis的XML实现方法

Mybatis的开发有两种方式: 1、注解 2、XML 使用Mybatis的注解方式,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句,也就是将SQL语句写在XML配置文件中。 Mybatis的XML的实现需要以下…

leetcode练习 二叉树的最大深度

给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3提示: 树中节点的数量在 [0, 104] 区间内。-100 …

java使用ByteBuffer进行多文件合并和拆分

1.背景 因为验证证书的需要,需要把证书文件和公钥给到客户,考虑到多个文件交互的不便性,所以决定将2个文件合并成一个文件交互给客户。刚开始采用字符串拼接2个文件内容,但是由于是加密文件,采用字符串形式合并后&…

fastadmin 部署后前台会员中心出现404错误

访问前台会员中心出现404错误。 解决:nginx访问站点增加伪静态 location / {if (!-e $request_filename){rewrite ^(.*)$ /index.php?s$1 last; break;} }在phpstydy中增加伪静态,如图:

保姆级教程教你如何安装Hadoop,实现Hadoop单机(非分布式)配置

下载Ubutu镜像 前往阿里镜像站https://mirrors.aliyun.com/oldubuntu-releases/releases/16.04.0/?spma2c6h.25603864.0.0.6be57ff3u2zMGR 选择下载ubuntu-16.04-desktop-amd64.iso 下载时间较久,请耐心等待 创建实验用虚拟机 选择创建新的虚拟机 选择典型并下一…

伊犁-linux 硬盘添加,分区,格式化

主要是linux 下操作硬盘分区,格式化 这样1个sata 盘就添加成功了 !  继续添加三块 sata1 hda sata hdb sata hdc sata hdd scsi sda 作为启动盘 进行操作系统的引导 如果scsi 往下调整 先敲enter 在用- 号往下 如果是往上调整敲…

win7自带壁纸丢失主题丢失

有时候盗版破解或者其他美化工具会导致win7自带的壁纸丢失,从个性化管理里面无法恢复原始的壁纸(如下图),但是由于工作原因公司的电脑又不方便设置第三方的壁纸,所以找了一下解决方案。 经典问题,百度找到的…

华为全联接大会HUAWEI Connect 2024印象(二):昇腾AI端侧推理

此次参加HUAWEI Connect 2024最主要目标是了解昇腾AI端侧推理技术,希望将其融合到我现在嵌入式系统课程中,不过刚开始在一楼找到一个小展台,看到了香橙派Orange Pi。香橙派是深圳迅龙的一个品牌,他们和很多芯片厂商都合作过&#…

创建Application(Qt)模板项目时的 Base class选择

在Qt中,当你使用Qt Creator新建一个Qt Widgets Application项目时,选择Base class是一个重要的步骤,因为它决定了你的主窗口或对话框将继承自哪个类,从而决定了你的应用程序将具有哪些基本的功能和外观。以下是一些常见的Base cla…

毕业设计选题:基于ssm+vue+uniapp的校园商铺系统小程序

开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…

动手学深度学习(李沐)PyTorch 第 1 章 引言

在线电子书 深度学习介绍 安装 使用conda环境 conda create -n d2l-zh python3.8 pip安装需要的包 pip install jupyter d2l torch torchvision下载代码并执行 wget https://zh-v2.d2l.ai/d2l-zh.zip unzip d2l-zh.zip jupyter notebookpip install rise如果不想使用jupyt…

NAT和代理服务

文章目录 NAT和代理服务1、NAT技术背景2、NAT 技术 IP 转换过程3、NAPT4、NAT 技术的缺陷5、代理服务器5.1、正向代理5.1.1、概念5.1.2、工作原理5.1.3、功能特点5.1.4、应用场景 5.2、反向代理5.2.1、概念5.2.2、工作原理5.2.3、应用场景 6、NAT 和代理服务器 NAT和代理服务 …

实景三维+耕地保护:构建耕地资源管理的全闭环新模式

在耕地资源日益珍贵的今天,如何高效、精准地实施耕地保护,成为了我国农业可持续发展与生态文明建设的关键课题。“实景三维耕地保护”的创新模式,能够为这一挑战提供突破性的解决方案,打造一个从前端监测到后端管理的全闭环耕地保…

Global Attention Decoder for Chinese Spelling Error Correction(ACL2021)

Global Attention Decoder for Chinese Spelling Error Correction(ACL2021) 一.概述 作者认为现有的纠错方法大多是基于局部上下文信息进行纠错,没有考虑句子中错词的影响。将注意力放在错误上下文信息上可能会误导并降低CSC(Chinese Spelling Correction)的整体性…