⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svcplot.m

📁 MATLAB的SVM算法实现
💻 M
字号:
function [h] = svcplot(X,Y,ker,alpha,bias,aspect,mag,xaxis,yaxis,input)%SVCPLOT Support Vector Machine Plotting routine%%  Usage: svcplot(X,Y,ker,alpha,bias,zoom,xaxis,yaxis,input)%%  Parameters: X      - Training inputs%              Y      - Training targets%              ker    - kernel function%              alpha  - Lagrange Multipliers%              bias   - Bias term %              aspect - Aspect Ratio (default: 0 (fixed), 1 (variable))%              mag    - display magnification %              xaxis  - xaxis input (default: 1) %              yaxis  - yaxis input (default: 2)%              input  - vector of input values (default: zeros(no_of_inputs))%%  Author: Steve Gunn (srg@ecs.soton.ac.uk)  if (nargin < 5 | nargin > 10) % check correct number of arguments    help svcplot  else    epsilon = 1e-5;      if (nargin < 10) input = zeros(1,size(X,2));, end    if (nargin < 9) yaxis = 2;, end    if (nargin < 8) xaxis = 1;, end    if (nargin < 7) mag = 0.1;, end    if (nargin < 6) aspect = 0;, end        % Scale the axes    xmin = min(X(:,xaxis));, xmax = max(X(:,xaxis));     ymin = min(X(:,yaxis));, ymax = max(X(:,yaxis));     xa = (xmax - xmin);, ya = (ymax - ymin);    if (~aspect)       if (0.75*abs(xa) < abs(ya))           offadd = 0.5*(ya*4/3 - xa);,           xmin = xmin - offadd - mag*0.5*ya;, xmax = xmax + offadd + mag*0.5*ya;          ymin = ymin - mag*0.5*ya;, ymax = ymax + mag*0.5*ya;       else          offadd = 0.5*(xa*3/4 - ya);,           xmin = xmin - mag*0.5*xa;, xmax = xmax + mag*0.5*xa;          ymin = ymin - offadd - mag*0.5*xa;, ymax = ymax + offadd + mag*0.5*xa;       end    else       xmin = xmin - mag*0.5*xa;, xmax = xmax + mag*0.5*xa;       ymin = ymin - mag*0.5*ya;, ymax = ymax + mag*0.5*ya;    end        set(gca,'XLim',[xmin xmax],'YLim',[ymin ymax]);      % Plot function value    [x,y] = meshgrid(xmin:(xmax-xmin)/50:xmax,ymin:(ymax-ymin)/50:ymax);     z = bias*ones(size(x));    wh = waitbar(0,'Plotting...');    for x1 = 1 : size(x,1)      for y1 = 1 : size(x,2)        input(xaxis) = x(x1,y1);, input(yaxis) = y(x1,y1);        for i = 1 : length(Y)          if (abs(alpha(i)) > epsilon)    	    z(x1,y1) = z(x1,y1) + Y(i)*alpha(i)*svkernel(ker,input,X(i,:));          end        end      end      waitbar((x1)/size(x,1))    end    close(wh)    l = (-min(min(z)) + max(max(z)))/2.0;    sp = pcolor(x,y,z);    shading interp      set(sp,'LineStyle','none');    set(gca,'Clim',[-l  l],'Position',[0 0 1 1])    axis off    load cmap    colormap(colmap)    % Plot Training points    hold on    for i = 1:size(Y)      if (Y(i) == 1)        h(1) = plot(X(i,xaxis),X(i,yaxis),'b+','LineWidth',4); % Class A      else        h(2) = plot(X(i,xaxis),X(i,yaxis),'r+','LineWidth',4); % Class B      end      if (abs(alpha(i)) > epsilon)        plot(X(i,xaxis),X(i,yaxis),'wo') % Support Vector      end    end     % Plot Boundary contour    hold on    contour(x,y,z,[0 0],'w')    contour(x,y,z,[-1 -1],'w:')    contour(x,y,z,[1 1],'w:')    hold off  end    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -