SVMshow

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');

  

原文地址:https://www.cnblogs.com/huadongw/p/4925648.html