Python实现HBA混合蝙蝠智能算法优化循环神经网络分类模型(LSTM分类算法)项目实战

news2024/11/26 22:33:54

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



 


1.项目背景

蝙蝠算法是2010年杨教授基于群体智能提出的启发式搜索算法,是一种搜索全局最优解的有效方法。该算法基于迭代优化,初始化为一组随机解,然后迭代搜寻最优解,且在最优解周围通过随机飞行产生局部新解,加强局部搜索速度。该算法具有实现简单、参数少等特点。

混合蝙蝠算法针对基本蝙蝠算法存在收敛速度慢,易陷入局部最优,求解精度低等缺陷,提出一种融合局部搜索的混合蝙蝠算法用于求解无约束优化问题。该算法利用混沌序列对蝙蝠的位置和速度进行初始化,为全局搜索的多样性奠定基础;融合Powell搜索以增强算法的局部搜索能力,加快收敛速度;使用变异策略在一定程度上避免算法陷入局部最优。

本项目通过HBA混合蝙蝠智能算法优化循环神经网络分类模型。

2.数据获取

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

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

 

3.数据预处理

3.1 用Pandas工具查看数据

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

关键代码:

 

3.2 数据缺失查看

使用Pandas工具的info()方法查看数据信息:

 

从上图可以看到,总共有11个变量,数据中无缺失值,共2000条数据。

关键代码:

3.3 数据描述性统计

通过Pandas工具的describe()方法来查看数据的平均值、标准差、最小值、分位数、最大值。

关键代码如下:

 

4.探索性数据分析

4.1 y变量柱状图

用Matplotlib工具的plot()方法绘制柱状图:

4.2 y=1样本x1变量分布直方图

用Matplotlib工具的hist()方法绘制直方图:

4.3 相关性分析

 

从上图中可以看到,数值越大相关性越强,正值是正相关、负值是负相关。

5.特征工程

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

关键代码如下:

5.2 数据集拆分

通过train_test_split()方法按照80%训练集、20%测试集进行划分,关键代码如下:

5.3 数据样本增维

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

6.构建HBA混合蝙蝠优化算法优化LSTM分类模型

主要使用HBA混合蝙蝠优化算法优化LSTM分类算法,用于目标分类。

6.1 HBA混合蝙蝠优化算法寻找的最优参数   

最优参数:

6.2 最优参数值构建模型

 

6.3 最优参数模型摘要信息

 

6.4 最优参数模型网络结构

 

6.5 最优参数模型训练集测试集损失和准确率曲线图

 

 

7.模型评估

7.1 评估指标及结果

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

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

关键代码如下:

7.2 分类报告

 

从上图可以看出,分类为0的F1分值为0.98;分类为1的F1分值为0.98。

7.3 混淆矩阵

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

8.结论与展望

综上所述,本文采用了HBA混合蝙蝠智能优化算法寻找循环神经网络LSTM算法的最优参数值来构建分类模型,最终证明了我们提出的模型效果良好。此模型可用于日常产品的预测。

# 开始迭代
t = 0
for t in range(N_gen):
        print('***********************当前迭代次数为:', t + 1, '******************************')

        # 对所有蝙蝠/位置进行循环
        for i in range(N_pop):
            Q[i] = np.random.uniform(Qmin, Qmax)  # 生成随机数
            v[i] = v[i] + (Sol[i] - best) * Q[i]  # 速度
            S[i] = Sol[i] + v[i]  # 位置
            # 调用边界处理函数
            Sol[i] = simplebounds(Sol[i], Lower_bound, Upper_bound)



# ******************************************************************************
 
# 本次机器学习项目实战所需的资料,项目资源如下:
 
# 项目说明:
 
# 链接:https://pan.baidu.com/s/1c6mQ_1YaDINFEttQymp2UQ
 
# 提取码:thgk
 
# ******************************************************************************


#  y变量柱状图
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
# kind='bar' 绘制柱状图
df['y'].value_counts().plot(kind='bar')
plt.xlabel("y变量")
plt.ylabel("数量")
plt.title('y变量柱状图')
plt.show()

 更多项目实战,详见机器学习项目实战合集列表:

机器学习项目实战合集列表_机器学习实战项目_胖哥真不错的博客-CSDN博客


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

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

相关文章

一款好用的被动式信息泄漏检测插件

插件介绍 FindSomething由陌陌安全残笑老哥开发的浏览器扩展,是一款优秀的被动式信息收集工具,用于展示浏览器打开的页面相关的网站资产和敏感信息。 关注【Hack分享吧】公众号,回复关键字【230629】获取下载链接 支持收集的信息类型如下&am…

瑞吉外卖总结

瑞吉外卖总结笔记 环境 SpringBoot、Mybatis-Plus 注意:使用Mybatis-Plus时,属性值要与数据库中的列名一致 静态映射 当将使用SpringBoot整合前端html项目时,需要使用静态资源的映射,否则会出现html页面部分效果无法展示 解…

F#奇妙游(15):优雅的WPF程序

WPF but F# 上一篇,写了一个F#的WPF,所有的东西都是随手写出来的,没有经过详细考虑和设计。就是吧,一点也不优雅……咋们虽然头发不多,但是优雅永不过时! 实际上能用的开源UI库(F#&#xff0c…

【NLP】多头注意力概念(02)

接上文: 【NLP】多头注意力概念(01) 五、计算注意力 将 Q、K 和 V 拆分为它们的头部后,现在可以计算 Q 和 K 的缩放点积。上面的等式表明,第一步是执行张量乘法。但是,必须先转置 K。 展望未来,每个张量的seq_length形状将通过其各自的张量来识别,以确保清晰…

2023年知识库软件爆火的有哪些?

2023年知识库软件爆火的可能性有很多,以下是一些可能的候选者: 一、Baklib:Baklib是一款新兴的知识库软件,它提供了强大的知识管理和组织功能。它能够帮助用户收集、整理和共享知识,并提供智能搜索和推荐引擎&#xf…

DP1042 国产代替TJA1042 CAN总线收发器接口芯片

5V 供电,IO 口兼容 3.3V,70V 总线耐压,待机模式 CAN FD 总线收发器DP1042是一款应用于 CAN 协议控制器和物理总线之间的接口芯片,可应用于卡车、公交、小汽车、工业控制等领域,支持 5Mbps CAN FD 灵活数据速率&#xf…

使用stata做meta系列三|Meta命令安装

上期小统带大家学习了Meta分析纳排标准确定,这期小统和大家一起学习一下Meta命令安装。 Meta命令安装 Stata安装meta命令包: http://3g.dxy.cn/bbs/topic/34967648 命令: help pr0012 点击 pr0012…… 点击 click here to install 将pro…

Gateway网关简介及使用

一、 什么是 API 网关(API Gateway)🍉 1.分布式服务架构、微服务架构与 API 网关🥝 在微服务架构里,服务的粒度被进一步细分,各个业务服务可以被独立的设计、开发、测试、部署和管理。这时,各个…

MySQL数据库,创建表及其插入数据和多表查询数据

首先,建表 创建student表,SQL代码如下 create table student (id int(10) not null unique primary key, name varchar(20) not null, sex varchar (4), brith year, department varchar(20), address varchar(50) ); 创建score表。SQL代码如下&…

自动化测试selenium(1)

自动化测试📪selenium 自动化测试📪selenium自动化测试📑selenium定位元素📍 实战测试百度搜索🔍安装测试环境Idea中进行自动化脚本编写打开网页:实现搜索功能:浏览器清空效果clear()&#xff1…

Vue通过微软官方链接预览pptx docx xlsx

目录: 一、实现步骤 二、实现效果 代码真实可用! 一、实现步骤: 1、使用的是vue和elementUI, 假设有这些变量:attachment是附件的意思 data() {return {previewDialog: false,attachmentSrc: ,attachmentList: [{name:…

第六次CCF计算机软件能力认证

第一题:数位之和 给定一个十进制整数 n,输出 n 的各位数字之和。 输入格式 输入一个整数 n。 输出格式 输出一个整数,表示答案。 数据范围 1≤n≤1e9 输入样例: 20151220输出样例: 13样例解释 20151220 的各位数字之和…

PhaseNet论文阅读总结

PhaseNet论文阅读总结 PhaseNet: a deep-neural-network-based seismic arrival-time pickingmethod 背景 地震监测和定位是地震学的基础 地震目录的质量主要取决于到达时间测量的数量和精度相位拾取一般都是网络分析员来执行但是地震仪越来越多,数据流增加&#…

记录自己的程序移植经历(裸机软PLC C语言程序移植到Linux)

先说一下本人的基础,本人是一个小公司初来乍到的实习生,拿到这个任务的时候,不懂PLC,而对于linux只懂一点点皮毛的操作。结果硬是把程序移植完毕且能顺利运行。 该程序是嵌入式软PLC,主要代码是对四元式指令的解析。说…

解决Hadoop集群hive库建表中文和表数据乱码问题

最近在测试环境,发现DDL建表后,发现中文注释和表数据乱码的问题,如下 查询元数据 原因是hive 的 metastore 支持的字符集是 latin1,所以中文写入的时候会有编码问题。 解决方案如下: 对MySQL的编码设置 [client]下面增加 default-character-set=utf8 在[mysqld]下面增…

Pytorch如何打印与Keras的model.summary()类似的输出

1 Keras的model.summary() 2 Pytorch实现 2.1 安装torchsummary包 pip install torchsummary2.2 代码 import torch import torch.nn as nn import torch.nn.functional as F from torchsummary import summaryclass Net(nn.Module):def __init__(self):super(Net, self).__…

微服务Gateway网关(自动定位/自定义过滤器/解决跨域)+nginx反向代理gateway集群

目录 Gateway网关 1.0.为什么需要网关? 1.1.如何使用gateway网关 1.2.网关从注册中心拉取服务 1.3.gateway自动定位 1.4.gateway常见的断言 1.5.gateway内置的过滤器 1.6.自定义过滤器-全局过滤器 1.7.解决跨域问题 2.nginx反向代理gateway集群 2.1.配置…

Matplotlib坐标轴格式

在一个函数图像中,有时自变量 x 与因变量 y 是指数对应关系,这时需要将坐标轴刻度设置为对数刻度。Matplotlib 通过 axes 对象的xscale或yscale属性来实现对坐标轴的格式设置。 示例:右侧的子图显示对数刻度,左侧子图则显示标量刻…

61、Mysql中MVCC是什么

什么是MVCC 多版本并发控制:读取数据时通过一种类似快照的方式将数据保存下来,这样读锁就和写锁不冲突了,不同的事务session会看到自己特定版本的数据,版本链 MVCC只在 READ COMMITTED 和 REPEATABLE READ 两个隔离级别下工作。…

apache ozone详细介绍

Ozone是哪路神 Apache Ozone https://github.com/apache/ozone Ozone是Apache软件基金会下的一个项目,其定位是:一个用户大数据分析和云原生应用、具有高扩展性、强一致性的分布式Key-Value对象存储。 HDFS是业界默认的大数据存储系统,在业…