matlab支持向量機(jī)SVM用于分類的算法實(shí)現(xiàn)_第1頁
matlab支持向量機(jī)SVM用于分類的算法實(shí)現(xiàn)_第2頁
matlab支持向量機(jī)SVM用于分類的算法實(shí)現(xiàn)_第3頁
matlab支持向量機(jī)SVM用于分類的算法實(shí)現(xiàn)_第4頁
matlab支持向量機(jī)SVM用于分類的算法實(shí)現(xiàn)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、matlab 支持向量機(jī)(SVM)用于分類的算法實(shí)現(xiàn) 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論