SVMshow
% http://www.peteryu.ca/tutorials/matlab/visualize_decision_boundaries % load RankData % NumTrain =200; load RankData2 lambda = 20; rho = 1; c1 =10; c2 =10; epsilon = 0.2; result=[]; ker = 'lin'; sigma = 1/50; par = NonLinearDualSVORIM(X, y, c1, c2, epsilon, rho, ker, sigma); % set up the domain over which you want to visualize the decision % boundary xrange = [-5 5]; yrange = [-5 5]; % step size for how finely you want to visualize the decision boundary. inc = 0.1; % generate grid coordinates. this will be the basis of the decision % boundary visualization. [x1, x2] = meshgrid(xrange(1):inc:xrange(2), yrange(1):inc:yrange(2)); % size of the (x, y) image, which will also be the size of the % decision boundary image that is used as the plot background. image_size = size(x1) xy = [x1(:) x2(:)]; % make (x,y) pairs as a bunch of row vectors. %xy = [reshape(x, image_size(1)*image_size(2),1) reshape(y, image_size(1)*image_size(2),1)] % loop through each class and calculate distance measure for each (x,y) % from the class prototype. % calculate the city block distance between every (x,y) pair and % the sample mean of the class. % the sum is over the columns to produce a distance for each (x,y) % pair. d = []; for k=1:max(y) d(:,k) = decisionfun(xy, par, X,y,k,epsilon, ker,sigma)'; end [~,idx] = min(abs(d),[],2) % reshape the idx (which contains the class label) into an image. decisionmap = reshape(idx, image_size); figure; %show the image imagesc(xrange,yrange,decisionmap); hold on; set(gca,'ydir','normal'); % colormap for the classes: % class 1 = light red, 2 = light green, 3 = light blue cmap = [1 0.8 0.8; 0.95 1 0.95; 0.9 0.9 1] colormap(cmap); % label the axes. xlabel('x1'); ylabel('x2'); imagesc(xrange,yrange,decisionmap); % plot the class training data. color = {'r.','go','b*','r.','go','b*'}; for i=1:max(y) plot(X(y==i,1),X(y==i,2), color{i}); hold on end % include legend legend('Class 1', 'Class 2', 'Class 3','Location','NorthOutside', ... 'Orientation', 'horizontal'); hold on; set(gca,'ydir','normal');