Vous êtes sur la page 1sur 11

Application avec MATLAB

Importation des données à partir d’un fichier Excel et labellisation des observations

 En cliquant sur l’onglet « File », puis en choisissant « import


data »

 En cliquant sur le bouton « import data » dans le « Workspace »

 Si le fichier qui nous intéresse se trouve dans le « current Folder »,


cliquer sur son nom puis cliquer avec le bouton droit de la sourie.
Cliquer ensuite sur « Import Data » à la fin de liste déroulante.
Formes d’import :
Matrice : Matrix

Vecteurs : Column vectors

Remarque
Génération de nombre aléatoire avec MATLAB
Il suffit d’une simple instruction :
Y=random(‘name’,A,B,c,d)
Où :
name est le nom de la loi : par exemple ‘Normal’ (il ya 23 lois
différentes dans Matlab).
A et B sont les paramètres de la loi (dans le cas de la loi normale il y en
a deux , pour les autres lois il peut il y en avoir moins ou plus).
c est le nombre de lignes
d est le nombre de colonnes.
Exemple :
Y=random('Normal',0,1,20,1)
Cette instruction va nous donner une colonne ('Normal',0,1,20,1) de 20
nombres ('Normal',0,1,20,1) aléatoires générés par une loi normale
('Normal',0,1,20,1)centrée ('Normal',0,1,20,1)réduite
('Normal',0,1,20,1).
Premier TP
Travaux pratiques sur la classification par le perceptron

But du TP
Nous avons vu que nous pouvons utiliser le perceptron dans la tâche de
classification.
L’algorithme utilisé pour cela est l’algorithme du perceptron.
Nous avons un ensemble d’entraînement (un ensemble de 4 points, dont
nous connaissons les coordonnées et la classe à laquelle appartient
chaque point).

A1 A2 B1 B2
X1 0.3 0.1 -0.6 -0.1
X2 0.7 -0.45 0.3 -0.8
t 1 1 0 0

L’entraînement se fait donc en mode supervisé.


Le but est de faire apprendre au Perceptron comment classer ces points.

Le moyen (pour cela) est de changer les poids jusqu’à ce que


l’apprentissage soit correct pour tous les points.
A cette étape nous disons que le perceptron a appris.
EXECUTION de l’ENTRAINEMENT :
Première action :
Nous choisissons les poids, d’une manière aléatoire. Il faut qu’ils soient
de petites valeurs.

𝑤10 = 0.8
𝑤20 = −0.5
Nous choisissons aussi le taux d’apprentissage :

𝛽 = 0.5
Deuxième action :

- On introduit les coordonnées du premier point.


- On calcul l’activation u.
- Nous regardons le signe de u : si 𝑢 ≥ 0 alors 𝑦 = 1
- Si 𝑢 < 0 alors y=0
- Nous comparons la valeur de y avec la valeur de t : si elles ont la
même valeur il n’y a aucun changement.
- Si les valeurs sont différentes nous appliquons l’algorithme du
perceptron pour corriger les poids.

Troisième action :
Nous vérifions si ce premier point est bien classé. S’il ne l’est pas nous
répétons la première action avec les nouveaux poids.
Et nous vérifions de nouveau jusqu’à ce que le point soit bien classé.
Quatrième action :
Prendre un nouveau point et répéter le processus.
Cinquième et dernière action :
Après le dernier point nous vérifions si, avec les derniers poids, le
classement est correct pour tous les points :

- S’il est correct nous disons que le perceptron est entraîné et le


travail s’achève.
- S’il n’est pas correct nous devons répéter, à partir du premier point
et sur tout l’ensemble.
Perceptron pour la classification avec Matlab
Première action :
Ouvrir Matlab
Deuxième action :
Introduction des données :
Il existe plusieurs façons,
- Introduction manuelle.
P=[0.4 0.2 -0.5 -0.2;0.6 -0.4 0.3 1-0.7] ;
T = [1 1 0 0];

- Introduction avec l’instruction ‘copier-coller’ à partir d’un


document : Word, Excel …
- Utiliser l’instruction Import Data dans Matlab

Visualiser les données


C’est avec l’instruction
plotpv(P,T);

Elle donne la représentation graphique d’un nuage de points répartis en


deux classes. (Ou en plusieurs classes selon le cas).
Elle représente les points appartenant à l’une des classes par un symbole
(o) et les points appartenant à l’autre classe par un deuxième symbole
(+).
Troisième action :
Création d’un perceptron
C’est juste par l’instruction suivante :
net = newp([-1 1;-1 1],1);

net est le nom du réseau


newp c’est la création d’un perceptron. Remarquons que pour créer un
réseau d’une autre nature il faut d’autres instructions
[-1 1;-1 1] c’est l’étendue pour chacune des variables.
1 c’est le nombre de neurones.

Pour visualiser le réseau nous utilisons l’instruction suivante


view(net)

Pour voir toutes les caractéristiques du réseau on écrit tout simplement


le nom du réseau
net
Quatrième action :
Entraînement du réseau
Il faut d’abord une instruction pour fixer les paramètres de
l’entraînement
net.adaptParam.passes = 3;
L’entraînement se fait par l’instruction suivante
net = adapt(net,P,T);

Cinquième action :
Visualisation :
Ici nous avons deux instructions :
plotpc(net.IW{1},net.b{1});

plotpv(P,T);

Pour garder deux représentations sur le même graphique, on utilise :


hold on

Pour tracer la droite nous besoin du programme suivant :


linehandle=plotpc(net.IW{1},net.b{1});

for a = 1:3
[net,Y,E] = adapt(net,P,T);

linehandle = plotpc(net.IW{1},net.b{1},linehandle); drawnow;

end;

Pour voir les valeurs des poids et du biais, nous avons les instructions
suivantes :
net.IW{1}

net.b{1}
Exercice :
1. Avec deux groupes de points :
La classe A contient deux points : (-0.5, -0.5) ;(-0.5, 0.5)
La classe B contient deux points : (0.3, -0.5) ;(-0.1, 1)
Créer avec Matlab un perceptron permettant de classer ces deux classes.

Programme allégé pour la classification par le perceptron de deux


groupes de points.
P = [ -0.5 -0.5 +0.3 -0.1; -0.5 +0.5 -0.5 +1.0];

T = [1 1 0 0];

plotpv(P,T);

net = newp([-1 1;-1 1],1);

view(net)

hold on

linehandle=plotpc(net.IW{1},net.b{1});

for a = 1:3

[net,Y,E] = adapt(net,P,T);

linehandle = plotpc(net.IW{1},net.b{1},linehandle); drawnow;

end ;

net.IW{1}

net.b{1}
2. Avec trois groupes de points :
Classification de trois groupes de points avec Matlab
Soient les trois classes suivantes :
- La classe A contient les 3 points :
(0.1 ; 0.1) , (0.1 ; 0.5) , (0.2 ; 0.4)
- La classe B contient les 3 points :
(0.6 ; 0.1) , (0.7 ; 0.1) , (0.8 ; 0.0)
- La classe C contient les 3 points :
(0.5 ; 0.5) , (0.6 ; 0.6) , (0.7 ; 0.5)
Créer avec Matlab un perceptron contenant deux neurones.
Entraîner ce perceptron pour qu’il apprenne à classer ces 9 points,
chacun dans sa classe respective.
Déterminer le nombre minimal d’itérations pour que la séparation des
trois classes soit correcte.
Donner pour les deux neurones les valeurs finales des poids et du biais.
Réponse :
P=[0.1 0.1 0.2 0.6 0.7 0.8 0.5 0.6 0.7;0.1 0.5 0.4 0.1 0.1 0.0 0.5 0.6
0.5]
T=[1 1 1 1 1 1 0 0 0;1 1 1 0 0 0 1 1 1]
Ou
P=[0.1 0.6 0.1 0.2 0.5 0.6 0.7 0.7 0.8;0.1 0.1 0.5 0.4 0.5 0.6 0.5 0.1 0] ;
T=[1 1 1 1 0 0 0 1 1; 1 0 1 1 1 1 1 0 0] ;
plotpv(P,T)
net = newp([-1 1;-1 1],2);
view(net)
hold on
linehandle=plotpc(net.IW{1},net.b{1});
for a = 1:20
[net,Y,E] = adapt(net,P,T);
linehandle = plotpc(net.IW{1},net.b{1},linehandle); drawnow;
end;
net.IW{1}
net.b{1}

Vous aimerez peut-être aussi