svrplot.m
上传用户:xfjled
上传日期:2007-05-06
资源大小:150k
文件大小:2k
源码类别:

matlab例程

开发平台:

Matlab

  1. function svrplot(X,Y,ker,beta,bias,e,mag,xaxis,yaxis,input)
  2. %SVRPLOT Support Vector Regression Plotting routine for 1D function
  3. %
  4. %  Usage: svrplot(X,Y,ker,alpha,bias,e,mag,xaxis,yaxis,input)
  5. %
  6. %  Parameters: X      - Training inputs
  7. %              Y      - Training targets
  8. %              ker    - kernel function
  9. %              beta   - Difference of Lagrange Multipliers
  10. %              bias   - Bias term 
  11. %              e      - e insensitive value
  12. %              mag    - display magnification 
  13. %              xaxis  - xaxis input (default: 1) 
  14. %              input  - vector of input values (default: zeros(no_of_inputs))
  15. %
  16. %  Author: Steve Gunn (srg@ecs.soton.ac.uk)
  17.   if (nargin < 5 | nargin > 8) % check correct number of arguments
  18.     help svrplot
  19.   else
  20.     epsilon = 1e-4;  
  21.     if (nargin < 9) input = zeros(1,size(X,2));, end
  22.     if (nargin < 8) xaxis = 1;, end
  23.     if (nargin < 7) mag = 0;, end
  24.     if (nargin < 6) e = 0;, end
  25.     
  26.     xmin = min(X(:,xaxis));, xmax = max(X(:,xaxis)); 
  27.     xa = (xmax - xmin);, xmin = xmin - mag*xa;, xmax = xmax + mag*xa;
  28.     % Plot function value
  29.     n = size(X,1);
  30.     x = [xmin:(xmax-xmin)/300:xmax]; 
  31.     z = bias*ones(size(x));
  32.     for x1 = 1 : length(x)
  33.       input(xaxis) = x(x1);
  34.       for i = 1 : length(Y)
  35.           if (abs(beta(i)) > epsilon)
  36.          z(x1) = z(x1) + beta(i)*svkernel(ker,input,X(i,:));
  37.           end
  38.       end
  39.     end
  40.     plot(x,z,'k','linewidth',2);
  41.     axis off
  42.     hold on
  43.     
  44.     % Plot e insensitive zone
  45.     if (e > 0)
  46.        plot(x,z+e,'b:')
  47.        plot(x,z-e,'b:')
  48.     end
  49.  
  50.     % Plot Training points
  51.     
  52.     for i = 1:size(Y)
  53.       plot(X(i),Y(i),'k+') 
  54.       if (abs(beta(i)) > epsilon)
  55.         plot(X(i),Y(i),'ro','markersize',10) % Support Vector
  56.       end
  57.     end
  58.     set(gca,'XLim',[xmin xmax]);  
  59.     hold off
  60.   end    
  61.