% exercice 8 du TD 1 du Master IAC 2010
% tronc commun ASO (Apprentissage Statistique et Optimisation)

% boucle autour de la classification lineaire de points du plan 2D
function classifie(seuil = 0)

x=-10:10;
y=-10:10;
[xx yy]= meshgrid(x,y);
z=10*xx + yy.^3;
contour(xx,yy,z,[seuil -3 -1  0 1 3]);
% les points
hold on
num=100;
px = 20*rand(num,1)-10
py = 20*rand(num,1)-10
% séparer les + des -
phi=10*px + py.^3;
indp=find(phi>seuil);
pxp=px(indp);
pyp=py(indp);
indn=find(phi<seuil);
pxn=px(indn);
pyn=py(indn);
plot(pxp,pyp,"+", "MarkerSize", 15);
plot(pxn,pyn,"o", "MarkerSize", 15);
% construire le y (z ici)
pz = ones(num,1);
ppz = pz - 2*(phi<0);
% le classifieur
[w1 w2 b] = classificationLineaire2D(px, py, ppz);
z = (-w1*x-b)/w2;
plot(x,z,"r");

hold off
% les erreurs
zphi = w1*px+w2*py+b;
% les faux positifs
zphin = zphi(indn);
classn = sum(zphin>0)
% les faux negatifs
zphip = zphi(indp);
classp = sum(zphip<0)
