SVM Separating hyperplane and its margin
Mostra commenti meno recenti
I am solving a classification problem using SVM specifically fitcsvm. I want to know how do I get the equation of the (a) separating hyperplane and (b) and equations of the margin.
My goal is to know whether a new sample (data_new, not added to the training set) is within the margin of separating hyperplane. BTW, im using gaussian kernel.
clc,clear; format compact; format shortG;
seed = 1;
rng(seed);
r = sqrt(rand(100,1)); % Radius
t = 2*pi*rand(100,1); % Angle
data1 = [r.*cos(t), r.*sin(t)]; % Points
r2 = sqrt(3*rand(100,1)+1); % Radius
t2 = 2*pi*rand(100,1); % Angle
data2 = [r2.*cos(t2), r2.*sin(t2)]; % points
figure;
plot(data1(:,1),data1(:,2),'r.','MarkerSize',15); hold on
plot(data2(:,1),data2(:,2),'b.','MarkerSize',15)
ezpolar(@(x)1);ezpolar(@(x)2);
ylim([-2.5,2.5]); xlim([-2.5,2.5]); hold off
axis equal

data3 = [data1;data2];
theclass = ones(200,1);
theclass(1:100) = -1;
%Train the SVM Classifier
cl = fitcsvm(data3,theclass,'KernelFunction','rbf',...
'BoxConstraint',Inf,'ClassNames',[-1,1]);
% Predict scores over the grid
d = 0.02;
[x1Grid,x2Grid] = meshgrid(min(data3(:,1)):d:max(data3(:,1)),...
min(data3(:,2)):d:max(data3(:,2)));
xGrid = [x1Grid(:),x2Grid(:)];
[~,scores] = predict(cl,xGrid);
r_new = sqrt(1.0*rand(20,1)+0.5); % Radius
t_new = 2*pi*rand(20,1); % Angle
data_new = [r_new.*cos(t_new), r_new.*sin(t_new)]; % points
% Plot the data and the decision boundary
figure;
h(1:2) = gscatter(data3(:,1),data3(:,2),theclass,'rb','.'); hold on
ezpolar(@(x)1); ezpolar(@(x)2);
h(3) = plot(data3(cl.IsSupportVector,1),data3(cl.IsSupportVector,2),'ko'); hold on
h(4) = gscatter(data_new(:,1),data_new(:,2),ones(20,1),'g','.');
contour(x1Grid,x2Grid,reshape(scores(:,2),size(x1Grid)),[0 0],'k');
legend(h,{'-1','+1','Support Vectors','New samples'}, Location="northeast");
axis equal
ylim([-2.5,2.5]); xlim([-2.5,2.5]);
hold off

I am not exactly sure if this 'margin' function is proper to use.
Can anybody help or suggest how to do this?
Risposta accettata
Più risposte (0)
Categorie
Scopri di più su Discriminant Analysis in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!