% 2 hold szeparálása SVM-mel n=500; r=2; h=-1; a=pi*rand(n,1); b=rand(n,1)-0.5; x1=(r+b).*cos(a); x2=(r+b).*sin(a); A=[x1,x2;x1+r,-x2-h]; % 2n * 2-es tömb, minden sor 1 pontnak felel meg % Output elkészítése: d=[zeros(n,1);ones(n,1)]; figure gscatter(A(:,1),A(:,2),d,'bg'); % Hálózat: net=fitcsvm(A,d,'KernelFunction','gaussian','KernelScale',3.5); % itt érdemes próbálgatni a különböző magfüggvényeket, valamint a % KernelScale különböző értékeit % infó: https://www.mathworks.com/help/stats/fitcsvm.html sv=net.SupportVectors; % tartóvektorok hold on plot(sv(:,1),sv(:,2),'ko','MarkerSize',10) % "bekarikázzuk a tartóvektorokat y=predict(net,A); crosstab(y,d) % tévesztési mátrix grX=linspace(-3,5,200); grY=linspace(-2,3,200); [X,Y]=meshgrid(grX,grY); xy=[X(:) Y(:)]; outxy=predict(net,xy); contour(X,Y,reshape(outxy,length(grX),length(grY)));