matlab支持向量机SVM用于分类的算法实现_第1页
matlab支持向量机SVM用于分类的算法实现_第2页
matlab支持向量机SVM用于分类的算法实现_第3页
matlab支持向量机SVM用于分类的算法实现_第4页
matlab支持向量机SVM用于分类的算法实现_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、matlab 支持向量机(SVM)用于分类的算法实现 function D, a_star = SVM(train_features, train_targets, params, region)% Classify using (a very simple implementation of) the support vector machine algorithm% Inputs:% features- Train features% targets - Train targets% params - kernel, kernel parameter, solver type, Slack

2、%Kernel can be one of: Gauss, RBF (Same as Gauss), Poly, Sigmoid, or Linear%The kernel parameters are:%RBF kernel - Gaussian width (One parameter)%Poly kernel - Polynomial degree%Sigmoid- The slope and constant of the sigmoid (in the format 12, with no separating commas)% Linear- None needed%Solver

3、type can be one of: Perceptron, Quadprog% region - Decision region vector: -x x -y y number_of_points% Outputs% D - Decision sufrace% a - SVM coeficients% Note: The number of support vectors found will usually be larger than is actually% needed because both solvers are approximate.Dim, Nf = size(tra

4、in_features);Dim= Dim + 1;train_features(Dim,:) = ones(1,Nf);z = 2*(train_targets0) - 1;%Get kernel parameterskernel, ker_param, solver, slack = process_params(params);%Transform the input featuresy = zeros(Nf);switch kernel,case Gauss,RBF,for i = 1:Nf,y(:,i)= exp(-sum(train_features-train_features(

5、:,i)*ones(1,Nf).A2)/(2*ker_paramA2);endcase Poly, Linearif strcmp(kernel, Linear)ker_param = 1;endfor i = 1:Nf,y(:,i) = (train_features*train_features(:,i) + 1).Aker_param;endcase Sigmoidif (length(ker_param) = 2)error(This kernel needs two parameters to operate!)endfor i = 1:Nf,y(:,i) = tanh(train_

6、features*train_features(:,i)*ker_param(1)+ker_param(2); endotherwiseerror(Unknown kernel. Can be Gauss, Linear, Poly, or Sigmoid.) end%Find the SVM coefficientsswitch solvercase Quadprog%Quadratic programmingif isfinite(slack)alpha_star = quadprog(z*z).*(y*y), -ones(1, Nf), , , z, 0, 0);elsealpha_st

7、ar = quadprog(z*z).*(y*y), -ones(1, Nf), , , z, 0, 0, slack);enda_star = (alpha_star.*z)*y;%Find the biasin= find(alpha_star 0) & (alpha_star 0) & (iter max_iter) iter = iter + 1;if (iter/5000 = floor(iter/5000),disp(Working on iteration number num2str(iter)end%Find the worse classified sample (That

8、 farthest from the border)dist = a_star*processed_y+xi;m, indice = min(dist);a_star = a_star + rate*processed_y(:,indice);%Calculate the new slack vectorxi(indice) = xi(indice) + rate;xi = xi / sum(xi) * slack;endif (iter = max_iter),disp(Maximum iteration ( num2str(max_iter) ) reached);elsedisp(Con

9、verged after num2str(iter) iterations.)endbias = 0;a_star = a_star(1:Nf);case Lagrangian%Lagrangian SVM (See Mangasarian & Musicant, Lagrangian Support Vector Machines) tol= 1e-5;max_iter= 1e5;nu= 1/Nf;iter= 0;D= diag(z);alpha = 1.9/nu;=ones(Nf,1);I=speye(Nf);Q=I/nu + D*y*D;P=inv(Q);u=P*e;oldu=u + 1

10、;while (iter tol), iter = iter + 1;if (iter/5000 = floor(iter/5000),disp(Working on iteration number num2str(iter) endoldu = u;f= Q*u-1-alpha*u;u= P*(1+(abs(f)+f)/2);enda_star = y*D*u(1:Nf);bias = -e*D*u;otherwiseerror(Unknown solver. Can be either Quadprog or Perceptron) end%Find support verctorssv

11、 = find(abs(a_star) 1e-10);Nsv = length(sv);if isempty(sv),error(No support vectors found);elsedisp(Found num2str(Nsv) support vectors)end%Marginb = 1/sqrt(sum(a_star.A2);disp(The margin is num2str(b)%Now build the decision regionN= region(5);xx= linspace (region(1),region(2),N);yy= linspace (region(3),region(4),N);D = zeros(N);for j = 1:N,y = zeros(N,1);for i = 1:Nsv,data = xx(j)*ones(1,N); yy; ones(1,N);switch kernel,a_star(i)case Gauss,RBF, y= y +exp(-sum(data-train_features(:,sv(i)*ones(1,N).A2)/(2*ker_paramA2);case Poly, Line

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论