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

📄 svcplot.m

📁 各种SVM分类算法
💻 M
字号:
function svcplot(X,Y,ker,alpha,bias,par)
%---------S200502106   郑黎方  ---------
%画图
%适用于2维特征,两类情况识别
%
%  [x,y,z]=svcplot(X,Y,ker,alpha,bias,par)
%
%  输入参数:同svm168.m 
%          



  if (nargin < 5 | nargin > 6) % 核查输入参数数目
    help svcplot
  else      
   if(nargin==5 & ker(1)~='l')
       disp('The used kernel needs an input parameter.');
       return
   elseif(nargin==5)
       par=0;
   end

    epsilon = 1e-10;  
    
    % 标定数轴比例尺
    xmin = min(X(:,1));, xmax = max(X(:,1)); 
    ymin = min(X(:,2));, ymax = max(X(:,2)); 
    xa = (xmax - xmin);, ya = (ymax - ymin);
    
    if (0.75*abs(xa) < abs(ya)) 
       offadd = 0.5*(ya*4/3 - xa);, 
       xmin = xmin - offadd - 0.05*ya;, xmax = xmax + offadd + 0.05*ya;
       ymin = ymin - 0.05*ya;, ymax = ymax + 0.05*ya;
    else
       offadd = 0.5*(xa*3/4 - ya);, 
       xmin = xmin - 0.05*xa;, xmax = xmax + 0.05*xa;
       ymin = ymin - offadd - 0.05*xa;, ymax = ymax + offadd + 0.05*xa;
    end
    
    set(gca,'XLim',[xmin xmax],'YLim',[ymin ymax]);  

    % 画支持向量机分类线

    [x,y] = meshgrid(xmin:(xmax-xmin)/50:xmax,ymin:(ymax-ymin)/50:ymax);
    z = bias*ones(size(x));
    Ind=find(alpha);
    for x1 = 1 : size(x,1)
      for y1 = 1 : size(x,2)
		  z(x1,y1)=kernel(ker,[x(x1,y1) y(x1,y1)],X(Ind,:),par)*alpha(Ind)+bias;
     end
  end
    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)

    %画样本数据
    hold on
    for i = 1:size(Y)
      if (Y(i) == 1)
        plot(X(i,1),X(i,2),'b+','LineWidth',4) % Class A
      else
        plot(X(i,1),X(i,2),'r+','LineWidth',4) % Class B
      end
    end 
   
    for i = 1:size(Y)
      if (abs(alpha(i)) > epsilon)
        if (Y(i) == 1)
          plot(X(i,1),X(i,2),'b+','LineWidth',4) % Class A
        else
          plot(X(i,1),X(i,2),'r+','LineWidth',4) % Class B
        end
        plot(X(i,1),X(i,2),'wo') %画 支持向量 
      end
   end 
   axis equal

 

    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 + -