Vous êtes sur la page 1sur 7

Les iris de Fisher sont des données proposées en 1933 par le statisticien Ronald Aylmer

Fisher comme données de référence pour la classification. Les données correspondent à 3

espèces de fleurs (Iris Setosa, Iris Virginica, Iris Versicolor). Les variables mesurées sont la

longueur et la largeur des sépales, la longueur et la largeur des pétales. Toutes ces variables

sont exprimées en millimètres (voir annexe).

Dans ce projet, nous proposons la classification automatique des 3 espèces de fleurs

moyennant les RNs modulaires (1 réseaux pour chaque espèce de fleurs) de type MLP avec

apprentissage par rétropropagation. La figure I donne l'architecture du réseau.

• Nbre de neurones de la couche cachée = 1.

• Nombre d'entrées= 4

• Constante d'apprentissage= 0.9.

• Nombre de sorties= 1.

• Fonction d'erreur= mse.

• Type de la fonction d'activation= Sigmoïde.

• Signal d'erreur= 0.01.

• Nbre de vrais exemplaires = 20

• Nombre maximal d'itérations = 10.

• Nbre de faux exemplaires = 20


Figure 1:Apprentissage de réseau de neurones

On constate que le MSE(Mean Square Error) diminue lorsque le nombre d’itérations augmente.
Figure 2:Calcul de MSE

Le gradient diminue et atteint 0,0018

Mu=1

Validation=0
Figure 3:Les paramètres en fonction de nombre d'itérations

La relation entre les valeurs de test et de sortie est présentée par la figure suivante.
Figure 4:Courbe de classification

Code Source :

Tout =[
5.1 3.5 1.4 0.2 7.0 3.2 4.7 1.4 6.3 3.3 6.0 2.5 ;
4.9 3.0 1.4 0.2 6.4 3.2 4.5 1.5 5.8 2.7 5.1 1.9 ;
4.7 3.2 3.1 0.2 6.9 3.1 4.9 1.5 7.1 3.0 5.9 2.1 ;
4.6 3.1 1.5 0.2 5.5 2.3 4.0 1.3 6.3 2.9 5.6 1.8 ;
5.0 3.6 1.9 0.2 5.6 2.8 4.6 1.5 6.5 3.0 5.8 2.2 ;
5.4 3.9 1.7 0.4 5.7 2.8 4.5 1.3 6.7 3.0 6.6 2.1 ;
4.6 3.4 1.4 0.3 6.3 3.3 4.7 1.6 4.9 2.5 4.5 1.7 ;
5.0 3.4 1.5 0.2 4.9 2.5 3.3 1.0 7.3 2.9 6.3 1.8 ;
4.4 2.9 1.4 0.2 6.6 2.9 4.6 1.3 6.7 2.5 5.8 1.8 ;
4.9 3.1 1.5 0.1 5.2 2.7 3.9 1.4 7.2 3.6 6.1 2.5 ;
5.4 3.7 1.5 0.2 5.0 2.0 3.5 1.0 6.5 3.2 5.1 2.0 ;
4.8 3.4 1.6 0.2 5.9 3.0 4.2 1.5 6.4 2.7 5.3 1.9 ;
4.8 3.0 1.4 0.1 6.0 2.2 4.0 1.0 6.8 3.0 5.5 2.1 ;
4.3 3.0 1.1 0.1 6.1 2.9 4.7 1.4 5.7 2.5 5.0 2.0 ;
5.8 4.0 1.2 0.2 5.6 2.9 3.6 1.3 5.8 2.8 5.1 2.4;
5.7 4.4 1.5 0.4 6.7 3.1 4.4 1.4 6.4 3.2 5.3 2.3;
5.4 3.9 1.3 0.4 5.6 3.0 4.5 1.5 6.5 3.0 5.5 1.8;
5.1 3.5 1.4 0.3 5.8 2.7 4.1 1.0 7.7 3.8 6.7 2.2;
5.7 3.8 1.7 0.3 6.2 2.2 4.5 1.5 7.7 2.6 6.9 2.3;
5.1 3.8 1.5 0.3 5.6 2.5 3.9 1.1 6.0 2.2 5.6 1.5;
5.4 3.4 1.7 0.2 5.9 3.2 4.8 1.8 6.9 3.2 5.7 2.3;
5.1 3.7 1.5 0.4 6.1 2.8 4.0 1.3 5.6 2.8 4.9 2.0 ;
4.6 3.6 1.0 0.2 6.3 2.5 4.9 1.5 7.7 2.8 6.7 2.0 ;
5.1 3.3 1.7 0.5 6.1 2.8 4.7 1.2 6.3 2.7 4.9 1.8 ;
4.8 3.4 1.9 0.2 6.4 3.9 4.3 1.3 6.7 3.3 5.7 2.1 ;
5.0 3.0 1.6 0.2 6.6 3.0 4.4 1.4 7.2 3.2 6.0 1.8 ;
5.0 3.4 1.6 0.4 6.8 2.8 4.8 1.4 6.2 2.8 4.8 1.8 ;
5.2 3.5 1.5 0.2 6.7 3.0 5.0 1.7 6.1 3.0 4.9 1.8 ;
5.2 3.4 1.4 0.2 6.4 2.9 4.5 1.5 6.4 2.8 5.6 2.1 ;
4.7 3.2 1.6 0.2 5.7 2.6 3.5 1.0 7.2 3.0 5.8 1.6];

maxi = max(max(Tout))
mini = min(min(Tout))
%% calcul de matrice normalisées
for i=1:30
for j=1:12

Toutn(i,j)=2* ((Tout(i,j) - mini)/ (maxi - mini)) -1;

end
end

Toutn;
iris1 = transpose(Toutn(:,1:4));
iris2 = transpose(Toutn(:,5:8));
iris3 = transpose(Toutn(:,9:12));
%A = Toutn(1:20,1:4);
A = iris1(:,1:20);
B = iris1(:,21:30);
C = iris2(:,1:20);
D = iris2(:,21:30);
E = iris3(:,1:20);
F = iris3(:,21:30);
E1 = E(:,1:10);
E2 = E(:,11:20);

C1 = C(:,1:10);
C2 = C(:,11:20);

A1 = A(:,1:10);
A2 = A(:,11:20);
%%%%Partie d'apprentissage%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%Les matrices d'apprentissage

App_iris1=[A,C1,E1]

App_iris2=[C,A1,E2]

App_iris3=[E,A2,C2]

%%%Les matrices de test

Test_iris1=[B,D,F];
Test_iris2=[D,B,F];

Test_iris3=[F,B,D];

%%%% test de size de la matrice d'apprentissage pour voir le nb de


%%%% caractere et nombre des exemplaire
s= size(App_iris3)

%%%%%

[nbre_exempl,nbre_caract]=size(App_iris3);
nbre_caract;
nbre_exempl;
Nero_cache = 1;
T=[ones(1,20),(-1*ones(1,20))];

%%%%% dans le reseau de neurones on a le nbre de caracteristique


(nbre_caract)
%%%%% equivalent au nombre des neurones dans la couche d'entrée, nero_cache
%%%%% equivalent au nombre des neurones dans la couche cachée et une seule
%%%%% sortie
net_RN=newff(minmax(App_iris1),[nbre_caract,Nero_cache,1]);
net_RN= init(net_RN);
net_RN.trainParam.show = 15;
net_RN.trainParam.epochs= 200;
net_RN.trainParam.goal = 0.001;
net_RN = train(net_RN,App_iris1,T);

%%%% Phase Test %%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

seuil = 0.5;
vect = sim(net_RN, Test_iris1);
vect (find(vect>=seuil))=1;
vect (find(vect < seuil)) = 0;
vect;

Vous aimerez peut-être aussi