【SVM分类】基于matlab鸽群算法优化支持向量机SVM分类【含Matlab源码 2242期】
⛄一、鸽群算法简介
基于鸽群在归巢过程中的特殊导航行为,Duan等提出了一种仿生群体智能优化算法———鸽群优化算法.在这个算法中,通过模仿鸽子在寻找目标的不同阶段使用不同导航工具这一机制,提出了2种不同的算子模型:
1)地图和指南针算子(map and compass operator).鸽子可以使用磁性物体感知地磁场,然后在头脑中形成地图.它们把太阳高度作为指南针来调整飞行方向,当它们接近目的地的时候,它们对太阳和磁性物体的依赖性便减小.
2)地标算子(landmark operator).地标算子用来模拟导航工具中地标对鸽子的影响.当鸽子飞近目的地时,它们将更多依赖附近的地标.如果鸽子对地标熟悉,将直接飞向目的地.否则,它们将跟随那些对地标熟悉的鸽子飞行.
在鸽群优化模型中,使用虚拟的鸽子模拟导航过程.依据地图和指南针算子(如图2所示)的原理,初始化鸽子的位置和速度,并且在多维搜索空间中,鸽子的位置和速度在每一次迭代中都会得到更新.其位置和速度分别记作
图2 地图和指南针算子模型
式中i=1,2,…,N.每只鸽子依据
更新其位置Xi及速度Vi.式中:R是地图和指南针因数,取值范围设定成01;rand是取值范围在01的随机数;Nc是目前迭代次数;Xgbest是在Nc-1次迭代循环后,通过比较所有鸽子的位置得到的全局最优位置.当该循环次数达到所要求的迭代次数后即停止地图和指南针算子的工作,进入地标算子中继续工作.
如图3所示,在地标算子中,每一次迭代后鸽子的数量都会减少一半.那些远离目的地的鸽子对地标不熟悉,它们将不再有分辨路径的能力,因而被舍去.Xcenter是剩余鸽子的中心位置,将被当作地标,即作为飞行的参考方向,由此依据下列方程:
对鸽子的位置Xi进行更新.其中
同样,以上迭代循环至最大迭代次数后,地标算子也停止工作.
图3 地标算子模型
⛄二、部分源代码
clear all
clc
load wine
% load balance
% 选定训练集和测试集
% 将第一类的1-30,第二类的60-95,第三类的131-153做为训练集
train_wine = [wine(1:30,:);wine(60:95,:);wine(131:153,:)];
% 相应的训练集的标签也要分离出来
train_wine_labels = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)];
% 将第一类的31-59,第二类的96-130,第三类的154-178做为测试集
test_wine = [wine(31:59,:);wine(96:130,:);wine(154:178,:)];
% 相应的测试集的标签也要分离出来
test_wine_labels = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];
% 数据预处理
% 数据预处理,将训练集和测试集归一化到[0,1]区间
[mtrain,ntrain] = size(train_wine);
[mtest,ntest] = size(test_wine);
dataset = [train_wine;test_wine];
[dataset_scale,ps] = mapminmax(dataset’,0,1);
dataset_scale = dataset_scale’;
train_wine = dataset_scale(1:mtrain,:);
test_wine = dataset_scale( (mtrain+1):(mtrain+mtest),: );
Solution_no=20; %Number of search solutions
M_Iter=20; %Maximum number of iterations
LB = 0.01;
UB = 100;
F_obj = @(x)objfun(x,train_wine_labels,train_wine,test_wine_labels,test_wine);
Dim = 2;
[PIO_Best_FF,PIO_zbest,PIO_Conv_curve]=PIO(Solution_no,M_Iter,LB,UB,Dim,F_obj); % Call the AOA
bestc=PIO_zbest(1);
bestg=PIO_zbest(2);
disp(‘打印选择结果’);
str=sprintf(‘Best c = %g,Best g = %g’,bestc,bestg);
disp(str)
%% 利用最佳的参数进行SVM网络训练
cmd_gwosvm = ['-c ‘,num2str(bestc),’ -g ',num2str(bestg)];
model_gwosvm = svmtrain(train_wine_labels,train_wine,cmd_gwosvm);
%
%% SVM仿真测试
[predict_label_2,accuracy_2,bbb] = svmpredict(test_wine_labels,test_wine,model_gwosvm);
result_2 = [test_wine_labels predict_label_2];
total = length(test_wine_labels);
right = sum(predict_label_2 == test_wine_labels);
disp(‘打印测试集分类准确率’);
str = sprintf( ‘Accuracy = %g%% (%d/%d)’,accuracy_2(1),right,total);
disp(str);
⛄三、运行结果
⛄四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1]段海滨,叶飞.鸽群优化算法研究进展[J].北京工业大学学报. 2017,43(01)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
【SVM分类】基于matlab鸽群算法优化支持向量机SVM分类【含Matlab源码 2242期】相关推荐
- 【分类-SVM】基于哈里斯鹰算法优化支持向量机SVM实现分类附matlab的代码
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
- 【Matlab图像加密】正交拉丁方置乱算法图像加解密【含GUI源码 182期】
一.代码运行视频(哔哩哔哩) [Matlab图像加密]正交拉丁方置乱算法图像加解密[含GUI源码 182期] 二.matlab版本及参考文献 一.代码运行视频(哔哩哔哩) [Matlab图像处理]自动 ...
- 【Matlab肌电信号】肌电信号处理【含GUI源码 966期】
一.代码运行视频(哔哩哔哩) [Matlab肌电信号]肌电信号处理[含GUI源码 966期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继周,杨 ...
- 【Matlab图像检索】综合特征图像检索【含GUI源码 395期】
一.代码运行视频(哔哩哔哩) [Matlab图像检索]综合特征图像检索[含GUI源码 395期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...
- 【Matlab语音处理】声音信号频谱分析仪【含GUI源码 325期】
一.代码运行视频(哔哩哔哩) [Matlab语音处理]声音信号频谱分析仪[含GUI源码 325期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...
- 【Matlab条形码识别】二维条形码识别【含GUI源码 607期】
一.代码运行视频(哔哩哔哩) [Matlab条形码识别]二维条形码识别[含GUI源码 607期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...
- 【SVM时序预测】基于matlab鲸鱼算法优化支持向量机SVM时序数据预测【含Matlab源码 2250期】
⛄一.鲸鱼算法优化支持向量机SVM 1 鲸鱼优化算法 WOA是由Mirjalili和Lewis在2016年提出的一种较为新颖的元启发式群体智能优化算法,该算法模仿座头鲸的"螺旋气泡网&quo ...
- 【LSSVM回归预测】基于matlab麻雀算法优化LSSVM回归预测【含Matlab源码 1128期】
⛄一.麻雀算法优化LSSVM简介 1 标准麻雀算法 算法运算过程由探索者.追随者与预警者3部分构成,其中探索者与追随者的总数量与比例不变,根据适应度数值的改变,两者可以相互转化.通过觅食和反捕食行为来 ...
- 【SVM分类】基于人工蜂群算法优化支持向量机SVM实现数据分类附Matlab代码
1 简介 为确定合理的底板防水煤岩柱尺寸,减少底板突水安全事故的发生,利用支持向量机(SVM)与人工蜂群算法(ABCA)综合研究底板破坏深度问题.由于SVM训练参数惩罚因子C和核函数宽度g的选择对预测 ...
最新文章
- rest_快速检查REST API是否有效的方法-从清单文件中获取详细信息
- module compiled against API version 0xb but this version of numpy is 0xa
- python turtle画熊-Python使用turtle库绘制小猪佩奇(实例代码)
- PHP学习方向-进阶2(三)
- 直接插入排序比较次数_插入排序(C++)
- 600兆的html文件怎么打开,如何打开容量600多兆的文本文件
- 【UI/UX】GUI设计指南
- TensorFlow tf.keras.layers.conv2D
- 编译GDAL使用最新的HDF库配置文件
- Xcode 快速开发 代码块
- 机器学习--单细胞聚类(二)
- 《MFC添加语音功能》
- matlab积分e (x 2),e^(x^2)的定积分
- docker部署微服务项目
- linux 内核 面试,LINUX内核经典面试题
- Teach Yourself Programming in Ten Years——用十年教会自己编程
- 论文笔记:Adversarial Net与IQA
- NoSQL和关系数据库的操作比较
- Markdown转PDF→利用 Markdown 制作电子书|非常简单
- 报错解决:[nodemon] app crashed - waiting for file changes before starting...
热门文章
- 【 华为OD机试 2023】 查找充电设备组合/最接近最大输出功率的设备 (C++ Java JavaScript Python 100%)
- 小码哥-斗鱼直播APP之加载数据动画
- 今天我收到了未来--记一次迟到两年的Airpods开箱
- #考试酷解析# 简介
- TranslucentTB状态栏图标隐藏及恢复,windows状态栏透明美化
- cuisineroyale服务器所在位置,cuisine royale配置要求是什么?最低配置要求介绍
- PyTorch中torch.norm函数详解
- Docker v19.x入门教程啊
- 自定义VBA函数(Fucntion)怎样才能只被VBA引用?
- vue+axios+el-upload实现文件上传(带参数):