基于麻雀搜索算法的同步优化特征选择 - 附代码

文章目录

  • 基于麻雀搜索算法的同步优化特征选择 - 附代码
    • 1.数据集
    • 2.SVM模型建立
    • 3.麻雀搜索算法同步优化特征选择
    • 4.测试结果
    • 5.参考文献:
    • 6.Matlab代码

摘要:针对传统支持向量机在封装式特征选择中分类效果差、子集选取冗余、计算性能易受核函数参数影响的不足, 利用麻雀优化算法对其进行同步优化。

1.数据集

wine 数据的来源是 UCI 数据库 , 记录的是在意大利同一区域里三种不同品种的葡萄酒的化学成分分析,数据里含有 178 个样本,每个样本含有 13 个特征分量(化学成分〉,每个样本 的类别标签已给。将这 178 个样本的 50%作为训练集,另 50%作为测试集 ,用训练集对 SVM 进行训练可以得到分类模型,再用得到的模型对测试集进行类别标签预测。

整体数据存储在 chapter_WineClass. mat ,解释如下: classnumber = 3 ,记录类别数目;

wine, 178 × 13 的 一个 double 型的矩阵,记录 178 个样本的 13 个属性;

wine_ labels, 178 × 1的 一个 double 型的列向盘,记录 178 个样本各自的类别标签 。

图1.数据集

2.SVM模型建立

首先需要从原始数据里把训练集和测试集提取出来,然后进行一定的预处理(必要的时候 还需要进行特征提取),之后用训练集对 SVM 进行训练,最后用得到的模型来预测测试集的分类标签。

图2.SVM模型

其中数据预处理采用归一化处理:对训练集和测试集进行归一化预处理,采用的归一化映射如下 。
y=x−xminxmax−xmin(1)y = \frac{x-x_{min}}{x_{max} - x{min}} \tag{1} y=xmax​−xminx−xmin​​(1)

3.麻雀搜索算法同步优化特征选择

​ 在元启发式群智能算法优化计算时, 对于不同的优化问题, 种群个体代表不同含义. 针对特征选择问题而言, 其实质是二元优化问题, 优化后的选择特征结果表示仅限于“0”与“1”, 值“0”表示未选择该特征, 值“1”表示选择该特征. 优化选择特征时, 种群的个体解可视为一维向量, 每个维度的原始数据值与 0.5 比较, 大于等于 0.5 则选择该特征, 否则剔除该特征.特征选择可视为多个目标优化问题, 当分类结果中分类准确率较高, 选择特征子集个数较少时说明所得分类效果优秀. 在算法迭代过程中, 一般采用适应度函数来评估每个解的质量. 为了平衡分类准确率和特征子集个数这两个指标.因此,根据SVM分类器所得到的解的分类准确率与特征选择的所选特征子集个数, 设计适应度函数 如下所示:
fiteness=argmax(accuracy[predict(train)]+accuracy[predict(test)]+1−r/N)fiteness = argmax(accuracy[predict(train)]+accuracy[predict(test)] + 1 - r/N) fiteness=argmax(accuracy[predict(train)]+accuracy[predict(test)]+1−r/N)
其中accuracy[predict(train)],accuracy[predict(test)]分别为训练集和测试集(验证集)准确率,根据自身需要看是只用训练集准确率还是综合考虑验证集准确率,r为选择的特征个数,N为总特征个数。

由于麻雀是求极小值,将目标求最大值转换为求极小值
fitness=−fitnessfitness = -fitness fitness=−fitness

4.测试结果

麻雀算法参数设置如下:

%%  麻雀参数设置
% 定义优化参数的个数,在该场景中,优化参数的个数为数据集特征总数 。
%目标函数
fobj = @(x) fun(x,train_wine_labels,train_wine,test_wine_labels,test_wine);
% 优化参数的个数 特征维度
dim = size(train_wine,2); %特征维度
% 优化参数的取值下限,[0,1],大于0.5为选择该特征,小于0.5为不选择该特征
lb = 0;
ub = 1;
%%  参数设置
pop =10; %麻雀数量
Max_iteration=50;%最大迭代次数
%% 优化
[Best_pos,Best_score,curve]=SSA(pop,Max_iteration,lb,ub,dim,fobj); 


基础SVM训练集最终预测准确率:100
基础SVM测试集最终预测准确率:98.8764
SSA特征选择后SVM训练集最终预测准确率:100
SSA特征选择后SVM测试集最终预测准确率:100
总特征数:13
麻雀算法选择的特征总数:9
麻雀算法选择的特征(0为不选择,1为选择):1 0 0 1 1 1 1 0 0 1 1 1 1

从结果来看,经过特征选择后,特征数明显减少,由13维变为9维,而且训练集和测试集精度均能达到比较好的结果。

5.参考文献:

[1]贾鹤鸣,姜子超,李瑶.基于改进秃鹰搜索算法的同步优化特征选择[J/OL].控制与决策:1-9[2021-11-02].https://doi.org/10.13195/j.kzyjc.2020.1025.

6.Matlab代码

基于麻雀搜索算法的同步优化特征选择 - 附代码相关推荐

  1. 智能优化算法应用:基于麻雀搜索算法的工程优化案例

    智能优化算法应用:基于麻雀搜索算法的工程优化案例 文章目录 智能优化算法应用:基于麻雀搜索算法的工程优化案例 1.麻雀搜索算法 2.压力容器设计问题 3.三杆桁架设计问题 4.拉压弹簧设计问题 4.M ...

  2. 基于麻雀算法的无人机航迹规划 - 附代码

    基于麻雀算法的无人机航迹规划 文章目录 基于麻雀算法的无人机航迹规划 1.麻雀搜索算法 2.无人机飞行环境建模 3.无人机航迹规划建模 4.实验结果 4.1地图创建 4.2 航迹规划 5.参考文献 6 ...

  3. 基于麻雀算法改进的DELM预测-附代码

    麻雀算法改进的深度极限学习机DELM的回归预测 文章目录 麻雀算法改进的深度极限学习机DELM的回归预测 1.ELM原理 2.深度极限学习机(DELM)原理 3.麻雀算法 4.麻雀算法改进DELM 5 ...

  4. 基于透镜成像学习策略的灰狼优化算法-附代码

    基于透镜成像学习策略的灰狼优化算法 文章目录 基于透镜成像学习策略的灰狼优化算法 1.灰狼优化算法 2.基于透镜成像学习的 GWO 算法 2.1修改控制参数*C*策略 2.2 透镜成像反向学习策略 3 ...

  5. 基于柯西变异的蚁狮优化算法 - 附代码

    基于柯西变异的蚁狮优化算法 文章目录 基于柯西变异的蚁狮优化算法 1.蚁狮优化算法 2. 改进蚁狮优化算法 2.1 基于柯西变异算子改进 3.实验结果 4.参考文献 5.Matlab代码 6.Pyth ...

  6. 基于Levy飞行的飞蛾扑火优化算法-附代码

    基于Levy飞行的飞蛾扑火优化算法 文章目录 基于Levy飞行的飞蛾扑火优化算法 1.飞蛾扑火优化算法 2. 改进飞蛾扑火优化算法 2.1 Lévy 飞行 3.实验结果 4.参考文献 5.Matlab ...

  7. 基于麻雀搜索算法优化的支持向量机回归预测-附代码

    基于麻雀搜索算法优化的支持向量机预测及其MATLAB代码实现 文章目录 基于麻雀搜索算法优化的支持向量机预测及其MATLAB代码实现 1. 基于麻雀搜索算法优化的支持向量机预测简介 1.1 支持向量机 ...

  8. 基于麻雀搜索算法优化的lssvm回归预测

    基于麻雀搜索算法优化的lssvm回归预测 - 附代码 文章目录 基于麻雀搜索算法优化的lssvm回归预测 - 附代码 1.数据集 2.lssvm模型 3.基于麻雀算法优化的LSSVM 4.测试结果 5 ...

  9. 智能优化算法:多元宇宙优化算法-附代码

    智能优化算法:多元宇宙优化算法-附代码 文章目录 智能优化算法:多元宇宙优化算法-附代码 1.算法原理 2.算法流程图 3.算法结果 4.参考文献 5.MATLAB代码 6.python代码 摘要:多 ...

最新文章

  1. bash 运行程序 下一步_怎样用 Bash 编程:语法和工具
  2. Java项目:食品溯源系统(java+Springboot+Maven+mybatis+Vue+mysql+wd)
  3. mysql-connector-net-6.7.4.msi,在ActiveReports中使用MySQL数据库
  4. C++内联函数学习总结
  5. WordPress打开速度很慢的解决方法
  6. shaderlab UV动画所需的变量声明
  7. Angular Schematics 学习笔记
  8. 是选择Keras还是PyTorch开始你的深度学习之旅呢?
  9. Java Web学习总结(12)——使用Session防止表单重复提交
  10. 【Proteus仿真8086】简单IO接口实验——无条件传输和查询方式
  11. 郭慧计算机,机械制图及CAD(高等院校网络教育系列教材)
  12. ES常用DSL语句(kibana常用语句)
  13. 达内学子商城项目简述(SSM+ecplise+tomcat8+mysql)
  14. 商品订单打印模板html,【EXCEL】如何制作订单单据查询与打印模板?
  15. 【保研夏令营经验贴】2021复旦大学计算机科学技术学院
  16. 使用搜狗输入法的U模式打出不会读的字
  17. 【ORACLE】关于多态表函数PTF(Polymorphic Table Functions)的使用
  18. IDEA导入Eclipse项目--ecli
  19. 图数据库|如何从零到一构建一个企业股权图谱系统
  20. “该设备正在使用中。请关闭可能使用该设备的所有程序或窗口 然后重试” 解决步骤

热门文章

  1. 电机与运动控制笔记整理(三)——异步电机概述
  2. 1W+字概括精髓,Pandas中必知必会50例
  3. google map 的地图偏移 火星坐标
  4. 关于updated()函数没有执行
  5. hosts文件恢复如初方法
  6. 【系统分析师之路】2016年系统分析师下午案例分析真题
  7. 基于自适应算法和增量式PID算法的模拟直升飞机控制系统
  8. m2无盘服务器,200台左右全网万兆台方案.doc
  9. mysql的备份恢复原理_MySQL备份恢复-mysqldump原理
  10. 拼多多校招编程题--大整数相乘(Java实现)