【SVM分类】基于改进鲸鱼算法优化最小二乘支持向量机实现数据分类matlab代码

176 阅读2分钟

1 简介

Mirjalili和Lewis在2016年从座头鲸的猎食行为中得到启示,提出一种新的元启发式优化算法——鲸鱼优化算法。该算法仿照座头鲸的泡泡网觅食方法,通过收缩包围、螺旋位置更新以及随机捕食行为捕猎,如图1所示。通过模仿其觅食建立数学模型,具体的寻优过程如下:首先通过判断系数向量A是否在区间[–1,1]内,若不在就采用搜索捕食的方式跳出当前包围圈;若在就通过判断阈值p选择包围猎物还是狩猎行为。为了减少控制变量,该算法只有位置向量,去掉了速度向量,所以使得算法的寻优能力得到增强。

img

img

img

2 部分代码

%% 普通 lssvm

clear

clc

close all

format compact

addpath LSSVMlab

%% 加载数据

load data_kjade

input=data_kjade;

output=[1*ones(1,100) 2*ones(1,100) 3*ones(1,100) 4*ones(1,100) 5*ones(1,100) 6*ones(1,100) 7*ones(1,100) 8*ones(1,100) 9*ones(1,100) 10*ones(1,100)        ]';

rand('seed',0)

%% 随机取700为训练集  300为测试集

[m,n]=sort(rand(1,1000));

m=700;

X1=input(n(1:m),:);

y1=output(n(1:m),:);

Xt=input(n(m+1:end),:);

yt=output(n(m+1:end),:);

%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

gam = 81.6492    ;  

sig2 =53.5081;

[yc,codebook,old_codebook] = code(y1,'code_MOC'); 

model = initlssvm(X1,yc,'c',gam,sig2,'RBF_kernel');

model = trainlssvm(model);

%% 测试集准确率

Y = simlssvm(model,Xt);

predict_label = code(Y,old_codebook,[],codebook);

fprintf(1,'Accuracy: %2.2f\n',100*sum(predict_label==yt)/length(yt));

figure 

stem(yt)

hold on

plot(predict_label,'*')

xlabel('测试集样本编号')

ylabel('输出标签')

title('测试集分类输出')

3 仿真结果

4 参考文献

[1]郑威迪等. "基于改进型鲸鱼优化算法和最小二乘支持向量机的炼钢终点预测模型研究." 电子学报 3(2019):7.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,有科研问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。