%[2009]-"Text feature selection using ant colony optimization"
% (9/12/2020)
function ACO = jAntColonyOptimizationSVM(feat,label,opts)
% Parameters
tau = 1; % pheromone value
eta = 1; % heuristic desirability
alpha = 1; % control pheromone
beta = 0.1; % control heuristic
rho = 0.2; % pheromone trail decay coefficient
if isfield(opts,'N'), N = opts.N; end
if isfield(opts,'T'), max_Iter = opts.T; end
if isfield(opts,'tau'), tau = opts.tau; end
if isfield(opts,'alpha'), alpha = opts.alpha; end
if isfield(opts,'beta'), beta = opts.beta; end
if isfield(opts,'rho'), rho = opts.rho; end
if isfield(opts,'eta'), eta = opts.eta; end
% Objective function
fun = @jFitnessFunctionSVM;
% Number of dimensions
dim = size(feat,2);
% Initial Tau & Eta
tau = tau * ones(dim,dim);
eta = eta * ones(dim,dim);
% Pre
fitG = inf;
fit = zeros(1,N);
curve = inf;
t = 1;
% Iterations
while t <= max_Iter
% Reset ant
X = zeros(N,dim);
for i = 1:N
% Random number of features
num_feat = randi([1,dim]);
% Ant start with random position
X(i,1) = randi([1,dim]);
k = [];
if num_feat > 1
for d = 2:num_feat
% Start with previous tour
k = [k(1:end), X(i, d-1)];
% Edge/Probability Selection (2)
P = (tau(k(end),:) .^ alpha) .* (eta(k(end),:) .^ beta);
% Set selected position = 0 probability (2)
P(k) = 0;
% Convert probability (2)
prob = P ./ sum(P(:));
% Roulette Wheel selection
route = jRouletteWheelSelection(prob);
% Store selected position to be next tour
X(i,d) = route;
end
end
end
% Binary
X_bin = zeros(N,dim);
for i = 1:N
% Binary form
ind = X(i,:);
ind(ind == 0) = [];
X_bin(i,ind) = 1;
end
% Fitness
for i = 1:N
% Fitness
fit(i) = fun(feat,label,X_bin(i,:),opts);
% Global update
if fit(i) < fitG
Xgb = X(i,:);
fitG = fit(i);
end
end
%---// [Pheromone update rule on tauK] //
tauK = zeros(dim,dim);
for i = 1:N
% Update Phromones
tour = X(i,:);
tour(tour == 0) = [];
% Number of features
len_x = length(tour);
tour = [tour(1:end), tour(1)];
for d = 1:len_x
% Feature selected on graph
x = tour(d);
y = tour(d + 1);
% Update delta tau k on graph (3)
tauK(x,y) = tauK(x,y) + (1 / (1 + fit(i)));
end
end
%---// [Pheromone update rule on tauG] //
tauG = zeros(dim,dim);
tour = Xgb;
tour(tour == 0) = [];
% Number of features
len_g = length(tour);
tour = [tour(1:end), tour(1)];
for d = 1:len_g
% Feature selected on graph
x = tour(d);
y = tour(d + 1);
% Update delta tau G on graph
tauG(x,y) = 1 / (1 + fitG);
end
%---// Evaporate pheromone // (4)
tau = (1 - rho) * tau + tauK + tauG;
% Save
curve(t) = fitG;
fprintf('\nIteration %d Best (ACO)= %f',t,curve(t))
t = t + 1;
end
% Select features based on selected index
Sf = Xgb;
Sf(Sf == 0) = [];
sFeat = feat(:,Sf);
% Store results
ACO.sf = Sf;
ACO.ff = sFeat;
ACO.nf = length(Sf);
ACO.s = curve;
ACO.f = feat;
ACO.l = label;
end
%// Roulette Wheel Selection //
function Index = jRouletteWheelSelection(prob)
% Cummulative summation
C = cumsum(prob);
% Random one value, most probability value [0~1]
P = rand();
% Roulette wheel
for i = 1:length(C)
if C(i) > P
Index = i;
break;
end
end
end
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
智能优化特征选择-基于ACO蚁群优化的特征选择分类算法KNN和SVM分类器(matlab程序) 1.程序功能已完成调试,用户可以通过一键操作生成图形和评价指标。 2.数据输入以Excel格式保存,只需更换文件,即可运行以获得个人化的实验结果。 3.代码中包含详细注释,具有较强的可读性,特别适合初学者和新手。 4.在实际数据集上的效果可能较差,需要对模型参数进行微调。
资源推荐
资源详情
资源评论
收起资源包目录
基于蚁群优化的特征选择分类算法.zip (11个子文件)
基于蚁群优化的特征选择分类算法
jFitnessFunctionSVM.m 1KB
data.xls 215KB
jAntColonyOptimization.m 4KB
jfs.m 397B
jAntColonyOptimizationSVM.m 4KB
ACO_KNN.m 3KB
jsvc.m 1KB
jknn.m 958B
auc.m 752B
jFitnessFunction.m 1KB
ACO_SVM.m 3KB
共 11 条
- 1
资源评论
机器不会学习CL
- 粉丝: 3331
- 资源: 71
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 中国商务统计年鉴面板数据2023-2001轻工产品加工运输旅行建设建筑电信计算机和信息服务贸易进出口等 数据年度2022-2000 excel、dta版本 数据范围:全国31个省份
- Android中各种图像格式转换(裁剪,旋转,缩放等一系列操作工具).zip
- 基于three.js + canvas实现爱心代码+播放器效果.zip
- 去年和朋友一起做的java小游戏.游戏具体界面在readme中,游戏设计的uml图在design.pdf中.zip
- 使用JAVA开发的飞机大战小游戏,包括i背景图以及绘制.zip竞赛
- 使用java代码完成一个联机版五子棋applet游戏.zip
- Linux系统上FastDFS相关操作脚本与软件包.zip
- W3CSchool全套Web开发手册中文CHM版15MB最新版本
- Light Table 的 Python 语言插件.zip
- UIkit中文帮助文档pdf格式最新版本
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功