function GFWOA = jGFWhaleOptimizationAlgorithm(feat,label,opts)
% Parameters
lb = 0;
ub = 1;
thres = 0.5;
b = 1; % constant
if isfield(opts,'T'), max_Iter = opts.T; end
if isfield(opts,'N'), N = opts.N; end
if isfield(opts,'b'), b = opts.b; end
if isfield(opts,'thres'), thres = opts.thres; end
% Objective function
fun = @jFitnessFunction;
% Number of dimensions
dim = size(feat,2);
% Initial
X = zeros(N,dim);
X1 = zeros(N,dim);%一次反向点
X2 = zeros(N,dim);%二次反向点
X3 = zeros(N,dim);%最终反向点
for i = 1:N
for d = 1:dim
X(i,d) = lb + (ub - lb) * rand();
end
end
for i = 1:N
for d = 1:dim
X1(i,d) = lb + ub - X(i,d);
end
end
for i = 1:N
for d = 1:dim
X2(i,d) = (lb + ub)/2;
end
end
for i = 1:N
for d = 1:dim
X3(i,d) = X2(i,d)+(abs(X1(i,d)-X2(i,d)) * rand());
end
end
% Fitness
fit = zeros(1,N);
fit1 = zeros(1,N);%保存反向点种群适应度值
fitG = inf;
for i = 1:N
fit(i) = fun(feat,label,(X(i,:) > thres),opts);
fit1(i) = fun(feat,label,(X3(i,:) > thres),opts);
if fit1(i) < fit(i)
fit(i) = fit1(i);
X(i,:) = X3(i,:);
end
%end
% Global best
if fit(i) < fitG
fitG = fit(i);
Xgb = X(i,:);
end
end
% Pre
curve = zeros(1,max_Iter);
curve(1) = fitG;
t = 2;
while t <= max_Iter
% Define a, linearly decreases from 2 to 0
a = 2 - t * (2 / max_Iter);
for i = 1:N
% Parameter A (2.3)
A = 2 * a * rand() - a;
% Paramater C (2.4)
C = 2 * rand();
% Parameter p, random number in [0,1]
p = rand();
% Parameter l, random number in [-1,1]
l = -1 + 2 * rand();
% Whale position update (2.6)
if p < 0.5
% {1} Encircling prey
if abs(A) < 1
for d = 1:dim
% Compute D (2.1)
sigma = abs(log(t)/t *(X(i,d)-Xgb(d)));
X(i,d) = normrnd(Xgb(d),sigma,1,1)+(rand()*Xgb(d)-rand()*X(i,d));
%Dx = abs(C * Xgb(d) - X(i,d));
% Position update (2.2)
%X(i,d) = Xgb(d) - A * Dx;
end
% {2} Search for prey
elseif abs(A) >= 1
for d = 1:dim
% Select a random whale
k = randi([1,N]);
% Compute D (2.7)
Dx = abs(C * X(k,d) - X(i,d));
% Position update (2.8)
X(i,d) = X(k,d) - A * Dx;
end
end
% {3} Bubble-net attacking
elseif p >= 0.5
for d = 1:dim
% Distance of whale to prey
dist = abs(Xgb(d) - X(i,d));
% Position update (2.5)
X(i,d) = dist * exp(b * l) * cos(2 * pi * l) + Xgb(d);
end
end
% Boundary
XB = X(i,:); XB(XB > ub) = ub; XB(XB < lb) = lb;
X(i,:) = XB;
end
% Fitness
for i = 1:N
% Fitness
fit(i) = fun(feat,label,(X(i,:) > thres),opts);
% Global best
if fit(i) < fitG
fitG = fit(i);
Xgb = X(i,:);
end
end
curve(t) = fitG;
fprintf('\nIteration %d Best (GFWOA)= %f',t,curve(t))
t = t + 1;
end
% Select features
Pos = 1:dim;
Sf = Pos((Xgb > thres) == 1);
sFeat = feat(:,Sf);
% Store results
GFWOA.sf = Sf;
GFWOA.ff = sFeat;
GFWOA.nf = length(Sf);
GFWOA.s = curve;
GFWOA.f = feat;
GFWOA.l = label;
end
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
智能优化特征选择-基于WOA鲸鱼优化的特征选择分类算法KNN和SVM分类器(matlab程序) 1.程序功能已完成调试,用户可以通过一键操作生成图形和评价指标。 2.数据输入以Excel格式保存,只需更换文件,即可运行以获得个人化的实验结果。 3.代码中包含详细注释,具有较强的可读性,特别适合初学者和新手。 4.在实际数据集上的效果可能较差,需要对模型参数进行微调。 智能优化特征选择-基于WOA鲸鱼优化的特征选择分类算法KNN和SVM分类器(matlab程序) 1.程序功能已完成调试,用户可以通过一键操作生成图形和评价指标。 2.数据输入以Excel格式保存,只需更换文件,即可运行以获得个人化的实验结果。 3.代码中包含详细注释,具有较强的可读性,特别适合初学者和新手。 4.在实际数据集上的效果可能较差,需要对模型参数进行微调。
资源推荐
资源详情
资源评论
收起资源包目录
基于鲸鱼优化的特征选择分类算法.zip (13个子文件)
基于鲸鱼优化的特征选择分类算法
jWhaleOptimizationAlgorithm.m 3KB
jFitnessFunctionSVM.m 1KB
data.xls 503KB
jfs.m 3KB
jGFWhaleOptimizationAlgorithm.m 3KB
jsvc.m 1KB
GFWOA_KNN.m 2KB
WOA_KNN.m 2KB
jknn.m 958B
WOA_SVM.m 2KB
auc.m 752B
jFitnessFunction.m 1KB
jWhaleOptimizationAlgorithmSVM.m 3KB
共 13 条
- 1
资源评论
机器不会学习CL
- 粉丝: 3331
- 资源: 71
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 《电路》大作业:基于matlab实现的节点电压法计算.zip
- 基于SpringBoot和Vue构建的文件分享系统,包括文件的上传与下载,文件的权限管理,远程文件管理等.zip
- 基于springboot+thymeleaf构建的保险出单系统(含后台管理系统).zip
- 毕业设计:基于Springboot+vue的校园社团管理系统的设计与实现.zip
- 小波包分解重构计算信号各频段能量
- Python QR Code 图像生成器.zip
- 003 硝烟的泯灭.mp3
- Html初学练习代码.zip学习资料程序资源
- Python for .NET 是一个软件包,它为 Python 程序员提供了与 .NET 公共语言运行时 (CLR) 几乎无缝的集成,并为 .NET 开发人员提供了强大的应用程序脚本工具 .zip
- 基于QT的DSA课程设计低风险出行系统,记忆化搜索算法为用户制定最低风险或者是限时最低风险策略的出行方案.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功