欢迎光临散文网 会员登陆 & 注册

【SVM分类】基于风驱动算法优化支持向量机实现数据分类附matlab代码

2022-04-07 08:00 作者:Matlab工程师  | 我要投稿

1 简介

支持向量机是利用已知数据类别的样本为训练样本,寻找同类数据的空间聚集特征,从而对测试样本进行分类验证,通过验证可将分类错误的数据进行更正。本文以体检数据为数据背景,首先通过利用因子分析将高维数据进行降维,由此将所有指标整合成几个综合性指标;为降低指标之间的衡量标准所引起的误差,本文利用 MATLAB软件将数据进行归一化处理,结合聚类分析将数据分类;最后本文利用最小二乘支持向量机分类算法进行分类验证,从而计算出数据分类的准确率,并验证了数据分类的准确性和合理性。

2 部分代码

%--------------------------------------------------------------tic;  clear;  close all;  clc;  format long g;delete('WDOoutput.txt');  delete('WDOpressure.txt');  delete('WDOposition.txt');fid=fopen('WDOoutput.txt','a');%--------------------------------------------------------------% User defined WDO parameters:param.popsize = 20;    % population size.param.npar = 5;      % Dimension of the problem.param.maxit = 500;    % Maximum number of iterations.param.RT = 3;      % RT coefficient.param.g = 0.2;      % gravitational constant.param.alp = 0.4;    % constants in the update eq.param.c = 0.4;      % coriolis effect.maxV = 0.3;      % maximum allowed speed.dimMin =  -5;      % Lower dimension boundary.dimMax= 5;      % Upper dimension boundary.%---------------------------------------------------------------% Initialize WDO population, position and velocity:% Randomize population in the range of [-1, 1]:pos = 2*(rand(param.popsize,param.npar)-0.5);% Randomize velocity:vel = maxV * 2 * (rand(param.popsize,param.npar)-0.5);   %---------------------------------------------------------------% Evaluate initial population: (Sphere Function)for K=1:param.popsize,  x = (dimMax - dimMin) * ((pos(K,:)+1)./2) + dimMin;      pres(K,:) = sum (x.^2);end%----------------------------------------------------------------% Finding best air parcel in the initial population :[globalpres,indx] = min(pres);globalpos = pos(indx,:);minpres(1) = min(pres);      % minimum pressure%-----------------------------------------------------------------% Rank the air parcels:[sorted_pres rank_ind] = sort(pres);% Sort the air parcels:pos = pos(rank_ind,:);keepglob(1) = globalpres;%-----------------------------------------------------------------% Start iterations :iter = 1;   % iteration counterfor ij = 2:param.maxit,      % Update the velocity:      for i=1:param.popsize    % choose random dimensions:    a = randperm(param.npar);                  % choose velocity based on random dimension:        velot(i,:) = vel(i,a);                  vel(i,:) = (1-param.alp)*vel(i,:)-(param.g*pos(i,:))+ ...            abs(1-1/i)*((globalpos-pos(i,:)).*param.RT)+ ...            (param.c*velot(i,:)/i);      end          % Check velocity:          vel = min(vel, maxV);          vel = max(vel, -maxV);    % Update air parcel positions:        pos = pos + vel;          pos = min(pos, 1.0);          pos = max(pos, -1.0);    % Evaluate population: (Pressure)    for K=1:param.popsize,      x = (dimMax - dimMin) * ((pos(K,:)+1)./2) + dimMin;          pres(K,:) = sum (x.^2);    end      %----------------------------------------------------      % Finding best particle in population      [minpres,indx] = min(pres);      minpos = pos(indx,:);             % min location for this iteration      %----------------------------------------------------      % Rank the air parcels:      [sorted_pres rank_ind] = sort(pres);      % Sort the air parcels position, velocity and pressure:      pos = pos(rank_ind,:);      vel = vel(rank_ind,:);      pres = sorted_pres;        % Updating the global best:      better = minpres < globalpres;      if better            globalpres = minpres             % initialize global minimum            globalpos = minpos;     end  % Keep a record of the progress:      keepglob(ij) = globalpres;      save WDOposition.txt pos -ascii -tabs;end  %Save values to the final file.      pressure = transpose(keepglob);      save WDOpressure.txt pressure -ascii -tabs;      %END%-----------------------------------------------------

3 运行结果

4 参考文献

[1]张烨, 黄伟. 基于天牛群算法优化SVM的磨煤机故障诊断. 

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

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




【SVM分类】基于风驱动算法优化支持向量机实现数据分类附matlab代码的评论 (共 条)

分享到微博请遵守国家法律