% 3 hz szeparálása svm-mel A=importdata('elemek3.txt'); X=A(:,1:2); Y=A(:,3); %végezzük el az osztályozást model=fitcecoc(X,Y) %ellenőrizzük, hogy jól sorolta-e be a 3 hz elemeit ypred=predict(model,X); crosstab(Y,ypred) % nézzük meg részleteiben az osztályozást % 3 db bináris osztályozással történt az osztályozás. % Az osztalyok nevei model.ClassNames % amit az első osztályozóról tudni lehet (ez az első két osztályt sorolja szét) model.BinaryLearners{1} %Ábrázoljuk a 3 bináris osztályozás eredményét figure %egész képernyős ábra lesz set(gcf, 'Units', 'Normalized', 'OuterPosition', [0, 0.04, 1, 0.96]); %az első 2 hz-t elválasztó egyenes (x'*beta+b) paraméterei: beta=model.BinaryLearners{1}.Beta; b=model.BinaryLearners{1}.Bias; % ábrázoljuk előbb a 3 hz-t subplot(2,2,1) gscatter(A(:,1),A(:,2),A(:,3),'brk','*o+') hold on % utána az első egyenest refline(-beta(1)/beta(2),-b/beta(2)) title('1 vs 2'); % a 2. bináris osztályozó (az 1 és 3 hz-ok szeparálása) beta=model.BinaryLearners{2}.Beta; b=model.BinaryLearners{2}.Bias; % ábrázoljuk előbb a 3 hz-t subplot(2,2,2) gscatter(A(:,1),A(:,2),A(:,3),'brk','*o+') hold on % a 2. egyenes refline(-beta(1)/beta(2),-b/beta(2)) title('1 vs 3'); % a 3. bináris osztályozó (a 2 és 3 hz-ok szeparálása) beta=model.BinaryLearners{3}.Beta; b=model.BinaryLearners{3}.Bias; % ábrázoljuk előbb a 3 hz-t subplot(2,2,3) gscatter(A(:,1),A(:,2),A(:,3),'brk','*o+') hold on % a 3. egyenes (mivel beta(2)=0) plot([-b/beta(1) -b/beta(1)],[-15 20]) title('2 vs 3'); % a teljes szeparálás grX=linspace(-10,15,200); grY=linspace(-15,20,200); [X,Y]=meshgrid(grX,grY); xy=[X(:) Y(:)]; outxy=predict(model,xy); subplot(2,2,4) gscatter(A(:,1),A(:,2),A(:,3),'brk','*o+') hold on contour(X,Y,reshape(outxy,length(grX),length(grY)));