Python实现哈里斯鹰优化算法(HHO)优化支持向量机分类模型(SVC算法)项目实战

news2024/11/25 6:46:55

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



 


1.项目背景


       2019年Heidari等人提出哈里斯鹰优化算法(Harris Hawk Optimization, HHO),该算法有较强的全局搜索能力,并且需要调节的参数较少的优点。


       本项目通过HHO哈里斯鹰优化算法寻找最优的参数值来优化支持向量机分类模型。


2.数据获取


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


编号 

变量名称

描述

1

x1

2

x2

3

x3

4

x4

5

x5

6

x6

7

x7

8

x8

9

x9

10

y

因变量


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


3.数据预处理

3.1 用Pandas工具查看数据


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



关键代码:


3.2数据缺失查看


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



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

关键代码:


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%测试集进行划分,关键代码如下:


6.构建HHO哈里斯鹰优化算法优化支持向量机分类模型


主要使用HHO哈里斯鹰优化算法优化SVC算法,用于目标分类。


6.1 算法介绍


     说明:HHO算法介绍来源于网络,供参考,需要更多算法原理,请自行查找资料


算法原理:


       哈里斯鹰优化算法是一种模拟哈里斯鹰捕食行为的智能优化算法,主要由 3 部分组成:搜索阶段、搜索与开发的转换和开发阶段。


搜索阶段


哈里斯鹰随机栖息在某个地方,通过2种策略找到猎物:



       其中,X(t)、X(t+1)分别为分别为当前和下一次迭代式时个体的位置,t为迭代次数,Xrand(t)  为随机选出的个体位置,Xrabbit(t)  为猎物位置,即拥有最优适应度的个体位置,r1 , r2 ,r3 ,r4 q都是[0,1]之间的随机数。q用来随机选择要采用的策略,Xm(t)  为个体平均位置,表达式为: 



其中,Xk(t)  为种群中第k个个体的位置,M为种群规模。


搜索与开发的转换


HHO 算法根据猎物的逃逸能量在搜索和不同的开发行为之间转换,逃逸能量定义为:


 


       其中,E0 是猎物的初始能量,为 [-1,1] 之间的随机数,每次迭代时自动更新,t为迭代次数,T 为最大迭代次数。当|E|≥1 时进入搜索阶段,|E|<1当时进入开发阶段。


开发阶段


       定义r为[0,1] 之间的随机数,用于选择不同的开发策略。当0.5 ≤ |E| < 1 且r ≥ 0.5 时,采取软围攻策略进行位置更新:


 


       其中,ΔX(t) = Xrabbit(t)  -X(t)表示猎物位置与个体当前位置的差值,J为 [0, 2] 之间的随机数。


当|E|<0.5且r ≥ 0.5 时采取硬围攻策略进行位置更新:



当0.5 ≤ |E| < 1 且r < 0.5时,采取渐近式快速俯冲的软包围策略进行位置更新:



      其中,f()为适应度函数,S为 2 维随机向量,元素为[0,1] 之间的随机数,LF() 是莱维飞行的数学表达式。


当|E|<0.5且r < 0.5 时,采取渐近式快速俯冲的硬包围策略进行位置更新:



算法步骤


步骤 1:种群初始化。根据搜索空间每一维的上界和下界,初始化每个个体。

步骤 2:计算初始适应度。将适应度最优的个体位置设为当前猎物位置。

步骤 3:位置更新。先通过更新猎物逃逸能量,然后根据逃逸能量和生成的随机数执行搜索或开发行为中对应的位置更新策略。

步骤 4:计算适应度。计算位置更新后的个体适应度,并与猎物适应度值进行比较,若位置更新后的个体适应度值优于猎物,则以适应度

值更优的个体位置作为新的猎物位置。

重复步骤 3 和步骤 4,当算法迭代次数达到最大迭代次数时。输出当前猎物位置作为目标的估计位置。


6.2 HHO哈里斯鹰优化算法寻找最优参数值


关键代码:



迭代过程: 


最优参数: 

6.3 最优参数值构建模型 

编号

模型名称

参数

1

支持向量机分类模型

C= 1.0

2

gamma= 0.09910165345655175

7.模型评估

7.1评估指标及结果


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


模型名称

指标名称

指标值

测试集

支持向量机分类模型

准确率

0.9300

查准率

0.9885

查全率

0.8687

F1分值

0.9247


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

关键代码如下:


7.2 查看是否过拟合

 


从上图可以看出,训练集和测试集分值相当,无过拟合现象。


7.3 分类报告


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


7.4 混淆矩阵 


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


8.结论与展望


       综上所述,本文采用了HHO哈里斯鹰优化算法寻找支持向量机SVC算法的最优参数值来构建分类模型,最终证明了我们提出的模型效果良好。此模型可用于日常产品的预测。


本次机器学习项目实战所需的资料,项目资源如下:

项目说明:
链接:https://pan.baidu.com/s/1c6mQ_1YaDINFEttQymp2UQ 
提取码:thgk 

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

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

相关文章

[疑难杂症2023-001]代码没有任何改变,仅用CI打了一个新镜像,运行出错的可能原因分析

本文由Markdown语法编辑器编辑完成。 1. 前言 近日在项目中&#xff0c;遇到一个比较奇怪的问题。就是代码基本没有做任何修改&#xff0c;只是在配置文件中增加了几行配置&#xff0c;结果用CI的服务器&#xff0c;打了一个新的tag, 然后再运行时&#xff0c;就会出现报错。…

一文带你看懂验证码攻防技术那些事儿

本文目录 验证码为什么越变越复杂&#xff1f; 验证码有哪些破解方式&#xff1f; 验证码如何进行顶层产品能力设计&#xff1f; “天生反骨”的验证码总是让人类头疼不已。 比如最基础的英文数字组合验证码&#xff0c;就已经会让人陷入自我怀疑&#xff1a; “I还是1&am…

【机器学习 - 3】:数据归一化(最值归一化、均值方差归一化)

文章目录数据归一化的使用最值归一化均值方差归一化&#xff08;常用&#xff09;在sklearn中调用归一化&#xff08;鸢尾花数据归一化&#xff09;数据归一化的使用 为什么要使用数据归一化&#xff1f; 举个例子&#xff0c;例如我们要使用KNN算法来预测肿瘤为良性肿瘤或恶性…

Python算法:三种高级排序的方法

前言 声明&#xff1a;本文所有动图来源为菜鸟教程 &#x1f340;作者简介&#xff1a;被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。 &#x1f341;个人主页&#xff1a;红中 &#x1f342;不就是蓝桥杯嘛&#xff0c;干他&#xff01;&#…

Windows系统上的小知识点集合(收藏更新)

1.开机自动运行 如果你写了一段代码或者脚本&#xff0c;甚至某个程序。希望在windows开机之后自动执行&#xff0c;可以按照以下方法操作 对于Windows系统&#xff0c;开机之后当所有的软件初始化完毕之后&#xff0c;会自动运行 C:\Users\&#xff08;你的用户名&#xff…

Elasticsearch入门—— Elasticsearch7.8.0版本索引操作

目录一、创建索引1.1、创建索引概述1.2、创建索引示例1.3、重复创建索引示例二、查看索引2.1、查看所有索引2.2、查看单个索引三、删除索引3.1、删除索引一、创建索引 1.1、创建索引概述 对比关系型数据库&#xff0c;创建索引就等同于创建数据库 1.2、创建索引示例 在 Pos…

matlab/simulink仿真数据的导出暨to workspace模块的使用

matlab/simulink仿真数据的导出 在用simulink仿真的时候&#xff0c;希望把数据导出&#xff0c;用其他软件进一步分析和处理&#xff0c;该如何做呢&#xff1f; 使用下面这个叫做to workspace的模块就可以实现 1 参数设置 把该模块拖出来。双击打开进行设置&#xff0c;会…

贪心策略(一)(选择排序、分割平衡串、买卖股票、跳跃游戏)

贪心算法&#xff08;又称贪婪算法&#xff09;是指&#xff0c;在对问题求解时&#xff0c;总是做出在当前看来是最好的选择。也就是说&#xff0c;不从整体最优上加以考虑&#xff0c;他所做出的是在某种意义上的局部最优解。 贪心选择是指所求问题的整体最优解可以通过一系列…

4、Ubuntu20常用操作_文本编辑文件系统目录和文件操作用户管理和文件权限

Ubuntu系统操作 注销&#xff08;退出Linux系统&#xff09; 在每次使用完后&#xff0c;一定要进行注销&#xff08;或者说退出&#xff09;&#xff0c;以防他人通过你的帐号进入系统。 在Linux提示符下&#xff0c;运行exit命令&#xff0c;即可退出本次登录 或直接按组…

代码随想录刷题训练营第七天|● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和 ● 总结

四数相加 看完题后的思路 首先想到了暴力解法,四重for循环,时间复杂度为0(n^4).接着往下想,四数相加不正好是(两数相加)(两数相加)吗,可以依次求出两数相加的结果存入hash表中 和-[下标1,下标2],然后再进行两数相加. 思路 上面的思路中,有两点疑问: (12)(34)(13)(24)吗? 1…

渗透测试基础入门【01】——测试流程(IPC$)

渗透测试基础入门【01】——测试流程&#xff08;IPC$&#xff09; 注意&#xff0c;攻击对方需要对方授权&#xff0c;本文章目的只为教学&#xff0c;不要拿去干违法的事 1 渗透测试流程 授权&#xff08;获取目标用户授权&#xff0c;否则是违法行为&#xff09;信息收集 …

【4 - 降维算法PCA和SVD - 原理部分】菜菜sklearn机器学习

课程地址&#xff1a;《菜菜的机器学习sklearn课堂》_哔哩哔哩_bilibili 第一期&#xff1a;sklearn入门 & 决策树在sklearn中的实现第二期&#xff1a;随机森林在sklearn中的实现第三期&#xff1a;sklearn中的数据预处理和特征工程第四期&#xff1a;sklearn中的降维算法…

nacos注册源码分析

Nacos注册服务 cosumer启动的时候&#xff0c;从nacos server上读取指定服务名称的实例列表&#xff0c;缓存到本地内存中。 开启一个定时任务&#xff0c;每隔10s去nacos server上拉取服务列表 nacos的push机制&#xff1a; 通过心跳检测发现服务提供者出现心态超时的时候…

SpringCloud学习笔记 - 流控规则 - Sentinel

1. Sentinel流控规则简介 这里的流控指的是“流量控制”&#xff0c;进一步解释说明&#xff1a; 资源名&#xff1a;唯一名称&#xff0c;默认请求路径。 针对来源&#xff1a;Sentinel可以针对调用者进行限流&#xff0c;填写微服务名&#xff0c;默认default&#xff08;不…

爬虫解析模块(bs4,selenium)

bs4文档 from bs4 import BeautifulSoupBeautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。Beautiful Soup自动将输入文档转换为Unicode编码&#xff0c;输出文档转换为utf-8编码。 解析器 解析器使用方法优势劣势Python标准库BeautifulS…

Dubbo——入门介绍

目录1.概述1.1.什么是 Dubbo &#xff1f;1.2.Dubbo 架构2.Dubbo 快速入门2.1.Zookeeper 安装2.2.创建项目2.3.代码实现2.3.1.dubbo-service 模块2.3.2.dubbo-web 模块2.4.本地启动2.5.使用 Dubbo 实现 PRC2.5.1.修改 dubbo-service 模块2.5.2.修改 dubbo-web 模块2.5.3.启动 d…

可免费编辑 PDF 内容的 7 大 PDF 编辑工具

有时您可能希望编辑 PDF 文档中的敏感信息&#xff0c;例如财务帐号和 ID 号&#xff0c;以便在不泄露隐私的情况下共享 PDF。编辑 PDF 是从 PDF 中删除私有内容。使用PDF 编辑工具可以轻松完成编辑。市场上有这么多工具&#xff0c;您需要选择最好的一种。 7 大 PDF 编辑工具 …

data analysis and predict

data anlysis and predict 谢邀&#xff0c;本人正在崩溃和兴奋间反复横跳&#xff08;崩溃居多&#xff09;&#xff0c;anyway, 我心态超好的&#xff01;besides, 仅供个人学习查阅&#xff0c;不具任何参考价值&#xff01;&#xff01;&#xff01; &#xff08;小边不想努…

路由信息协议RIP

文章目录路由信息协议RIP一、Routing Information Protocol的定义二、RIP的基本工作过程三、“坏消息传播得慢”的问题四、总结路由信息协议RIP 一、Routing Information Protocol的定义 RIP是分布式的基于距离向量的路由选择协议 协议RIP的特点是&#xff1a; 仅和相邻路由…

Java数据结构(泛型)

1、集合框架 Java 集合框架Java Collection Framework &#xff0c;又被称为容器container &#xff0c;是定义在 java.util 包下的一组接口interfaces 和其实现类classes 。 其主要表现为将多个元素element 置于一个单元中&#xff0c;用于对这些元素进行快速、便捷的存储sto…