Python实现SSA智能麻雀搜索算法优化支持向量机分类模型(SVC算法)项目实战

news/2024/4/29 10:13:07/文章来源:https://blog.csdn.net/weixin_42163563/article/details/127438654

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

1.项目背景

麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新型的群智能优化算法,在2020年提出,主要是受麻雀的觅食行为和反捕食行为的启发。

在麻雀觅食的过程中,分为发现者(探索者)和加入者(追随者),发现者在种群中负责寻找食物并为整个麻雀种群提供觅食区域和方向,而加入者则是利用发现者来获取食物。为了获得食物,麻雀通常可以采用发现者和加入者这两种行为策略进行觅食。种群中的个体会监视群体中其它个体的行为,并且该种群中的攻击者会与高摄取量的同伴争夺食物资源,以提高自己的捕食率。此外,当麻雀种群意识到危险时会做出反捕食行为。

本项目通过SSA麻雀搜索算法优化支持向量机分类模型。

2.数据获取

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

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

3.数据预处理

3.1 用Pandas工具查看数据

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

 关键代码:

3.2数据缺失查看

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

从上图可以看到,总共有8个变量,数据中无缺失值,共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.构建SSA麻雀搜索算法优化支持向量机分类模型

主要使用SSA麻雀搜索算法优化SVC算法,用于目标分类。

6.1 算法介绍

说明:算法介绍来源于网络,供参考。

在SSA中,具有较好适应度值的发现者在搜索过程中会优先获取食物。此外,因为发现者负责为整个麻雀种群寻找食物并为所有加入者提供觅食的方向。因此,发现者可以获得比加入者更大的觅食搜索范围。在每次迭代的过程中,发现者的位置更新描述如下:

 其中,t代表当前迭代数,itermax是一个常数,表示最大的迭代次数。Xij表示第i个麻雀在第j维中的位置信息。α∈(0,1]是一个随机数。R2(R2∈[0,1])和ST(ST∈[0.5,1])分别表示预警值和安全值。Q是服从正态分布的随机数。L表示一个1×d的矩阵,其中该矩阵内每个元素全部为1。当R2< ST 时,这意味着此时的觅食环境周围没有捕食者,发现者可以执行广泛的搜索操作。当R2 ≥ ST,这表示种群中的一些麻雀已经发现了捕食者,并向种群中其它麻雀发出了警报,此时所有麻雀都需要迅速飞到其它安全的地方进行觅食。

加入者(追随者)的位置更新描述如下:

其中,Xp是目前发现者所占据的最优位置,Xworst则表示当前全局最差的位置。A表示一个1×d的矩阵,其中每个元素随机赋值为1或-1,并且A+=AT(AAT)-1。当i >n/2时,这表明,适应度值较低的第i个加入者没有获得食物,处于十分饥饿的状态,此时需要飞往其它地方觅食,以获得更多的能量。

当意识到危险时,麻雀种群会做出反捕食行为,其数学表达式如下:

 其中,其中Xbest是当前的全局最优位置。β作为步长控制参数,是服从均值为0,方差为1的正态分布的随机数。K∈[-1,1]是一个随机数,fi则是当前麻雀个体的适应度值。fgfw分别是当前全局最佳和最差的适应度值。ε是最小的常数,以避免分母出现零。

为简单起见,当fi>fg表示此时的麻雀正处于种群的边缘,极其容易受到捕食者的攻击。fi=fg时,这表明处于种群中间的麻雀意识到了危险,需要靠近其它的麻雀以此尽量减少它们被捕食的风险。K表示麻雀移动的方向同时也是步长控制参数。

6.2 支持向量机构建模型

由于原始数据质量较好,直接应用支持向量机构建模型效果也很好。但是本项目的主要目的是应用SSA麻雀搜索算法优化模型。

6.3 SSA麻雀搜索算法寻找最优参数值

关键代码:

每次迭代的过程数据和最优值:

6.4 最优参数构建模型

这里通过最优参数构建支持向量机分类模型。

7.模型评估

7.1评估指标及结果

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

从上表可以看出,F1分值为0.9947,其中查全率有所提高,说明麻雀搜索算法优化的的模型效果较好。

关键代码如下:

7.2 查看是否过拟合

 

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

7.3 分类报告

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

7.4 混淆矩阵

 从上图可以看出,实际为0预测不为0的 有1个样本,整体预测准确率时非常高的。

8.结论与展望

综上所述,本文采用了SSA麻雀搜索算法寻找支持向量机SVC算法的最优参数值来构建分类模型,最终证明了我们提出的模型效果良好。此模型可用于日常产品的建模工作。

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

项目说明:
链接:https://pan.baidu.com/s/1dW3S1a6KGdUHK90W-lmA4w 
提取码:bcbp

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

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

相关文章

pytorch:常见的pytorch参数初始化方法总结

pytorch参数初始化1. 关于常见的初始化方法1&#xff09; 均匀分布初始化torch.nn.init.uniform_()2) 正态分布初始化torch.nn.init.normal_()3) 常量初始化torch.nn.init.constant_()4) Xavier均匀分布5&#xff09;Xavier正态分布初始化6) kaiming均匀分布初始化7) kaiming正…

除了pid还有什么控制算法,类似pid算法还有哪些

什么是专家PID&#xff1f;他和传统的PID有什么区别&#xff1f; PID是智能控制啊,比如要控制一个水管的水流量,通过流量计,开关阀,让PID来控制开关阀的开关大小使水流量正确.专家PID记得是PID的高级设置,某些个场合一般的PID无法使用,出现了了专用的,有特殊功能的.记忆中是这…

防火墙的ISP选路

拓补图&#xff1a; 实验目的&#xff1a; 让R1走ISP1的路径访问192.168.1.1&#xff0c;R2走ISP2的路径访问172.16.1.1 1. IP地址的配置略 2. 防火墙区域的划分&#xff08;防火墙的g1/0/2接口是属于ISP1接口&#xff0c;所以需要自己新建一个区域然后添加接口&#xff0c;…

测试界的飞虎队:测试人才战略——测试行业的精英战略(学习了)

一、前言 提到飞虎队&#xff0c;大家第一印象就是精英。相信绝大多数公司都希望能组件出一支优秀的测试队伍&#xff0c;来支撑自己的业务&#xff0c;很多公司都喊出了精英化战略。既然如此&#xff0c;就命中一个话题--测试人才战略。 有几个问题是不得不面对的&#xff1a…

算法 - 组合

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 剪枝优化 题目来源 77. 组合 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 输入&#…

JavaScript——关于JavaScript、在HTML中嵌入JS代码的三种方式、变量

前言 近日无意间透过装了热水之后&#xff0c;散发出水蒸气的透明水杯看东西时&#xff0c;发现看到的东西呈现模糊效果&#xff0c;这种效果和毛玻璃效果类似。毛玻璃效果在web、手机系统上也有很多应用&#xff0c;如网页上的广告弹窗&#xff0c;手机系统的消息通知界面等等…

LeetCode刷题复盘笔记——131. 分割回文串(一文搞懂回溯解决经典的分割回文串问题)

今日主要总结一下&#xff0c;131. 分割回文串 题目&#xff1a;131. 分割回文串 Leetcode题目地址 题目描述&#xff1a; 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读…

目标检测——day46 可转移交互性知识的人机交互检测

Transferable Interactiveness Knowledge for Human-Object Interaction Detection论文pdf下载&#xff08;含笔记&#xff09;Transferable Interactiveness Knowledge for Human-Object Interaction Detection1 INTRODUCTION3 PRELIMINARY4 METHOD4.1 Overview4.2 Representa…

JVM——类加载子系统

文章目录一、类加载器子系统作用二、类加载过程1、加载&#xff08;Loading&#xff09;2、验证&#xff08;Verification&#xff09;3、准备&#xff08;Preparation&#xff09;4、解析&#xff08;Resolution&#xff09;5、初始化&#xff08;Initialization&#xff09;三…

SpringCloud微服务实践之三 创建子项目UserService

创建子项目UserService&#xff0c;并将服务注册到Eureka UserService子项目作为用户信息的服务提供方&#xff0c;通过本项目&#xff0c;可以实现对基于Docker运行的mysql数据库表的读取。 1、在父项目上点击鼠标右键选择new→Module&#xff1a; 过程同上&#xff0c;略过…

基于jeecgboot的flowable驳回修改以及发起人设置

昨晚升级代码生成器&#xff0c;支持生成权限注解和菜单的SQL,修改驳回bug,以后保存流程强制要求第一个用户任务节点必须是发起人节点。 1、前端增加发起人设置 <el-radio label"INITIATOR">发起人</el-radio> 相应代码 if (this.containsKey(this.bpmn…

MybatisPlus【SpringBoot】 3 基本CRUD

MybatisPlus【SpringBoot】 【【尚硅谷】2022版MyBatisPlus教程&#xff08;一套玩转mybatis-plus&#xff09;】 3 基本CRUD 文章目录MybatisPlus【SpringBoot】3 基本CRUD3.1 BaseMapper3.2 插入3.3 删除3.3.1 通过id 删除记录3.3.2 通过id 批量删除记录3.3.3 通过map 条件…

【Svelte】-(7)绑定|Each 块绑定 / audio video 媒体标签绑定 / client offset 尺寸绑定 / this / 组件绑定

文章目录Each 块绑定媒体标签绑定尺寸绑定this组件绑定Each 块绑定 您也可以在 Each 的过程中使用。 不过需要注意的是&#xff0c;与这些 <input> 交互会改变数组。当要使用不可变数据&#xff0c;应该去避免使用这些绑定&#xff0c;并且改用事件来处理这些内容。 <…

nvm切换node版本

在实际的前端开发过程中&#xff0c;可能会经常遇见 node.js 的版本问题&#xff0c;不同的项目需要使用不同的 node.js 版本。比如Vue2和Vue3需要的Node版本不一样。 地址&#xff1a;https://github.com/coreybutler/nvm-windows/releases 注意&#xff1a;安装之前必须完…

[LCT刷题][树链信息维护] P4332 [SHOI2014]三叉神经树

写在前面 把黑题看成蓝题结果想了老半天感觉不对劲 本题对于理解SplaySplaySplay和LCTLCTLCT结构具有至关重要的意义&#xff0c;值得反复思考。 可能因为我比较菜 题目思路 题目给定一个类似神经网络的东西&#xff0c;每个节点都具有激活层、三输入单输出&#xff0c;输…

node.js+vue+Web的疫情大数据平台分析系统

以往的疫情防控管理事务处理主要使用的是传统的人工管理方式&#xff0c;这种管理方式存在着管理效率低、操作流程繁琐、保密性差等缺点&#xff0c;长期的人工管理模式会产生大量的文本文件与文本数据&#xff0c;这对事务的查询、更新以及维护带来不少困难。随着互联网时代的…

Google共码未来 与 C站 创造者的经历

本人仅参加一天活动 2022.9.14&#xff1b;吃喝拉撒全免费哈哈哈 大会主题&#xff1a;共码未来 looker、chromium、wouldnt、jetpack looker https://blog.csdn.net/WebEye_Marketing/article/details/116047404 chromium https://blog.csdn.net/arv002/article/details/1…

SEO和SEM的区别是什么,哪个效果更好一些

SEO指的是搜索引擎优化&#xff0c;SEM指的是搜索引擎影响&#xff0c;那么SEO和SEM的区别具体是什么&#xff1f;对于初创业的企业来说&#xff0c;哪个更好呢&#xff1f;下面&#xff0c;本文将介绍SEO和SEM的区别&#xff0c;帮助企业和公司网络人员理清这两者的优劣势。 S…

【力扣刷题】Day31——DP专题

文章目录七、子序列问题&#xff08;线性DP and 区间DP&#xff09;1、子序列&#xff08;不连续&#xff09;29.最长递增子序列&#xff08;LIS&#xff09;30. 最长公共子序列 &#xff08;LCS&#xff09;31.不相交的线2、子序列&#xff08;连续&#xff09;32. 最长连续递…

C语言中的指针

一。什么是指针&#xff1f; 在计算机科学中&#xff0c;指针&#xff08;Pointer&#xff09;是编程语言中的一个对象&#xff0c;利用地址&#xff0c;它的值直接指向&#xff08;points to&#xff09;存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元&a…