mon master2 ISIFAR

ISIFAR
 
AccueilFAQRechercherS'enregistrerMembresGroupesConnexion

Partagez | 
 

 algorithme du perceptron

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Admin
Admin


Nombre de messages : 418
Date d'inscription : 27/09/2005

MessageSujet: algorithme du perceptron   Ven 4 Nov à 1:46

#Génération artificielle de deux classes linéairement séparables sur nuage de points aléatoire

N=50; #Nb de points au total;
p=2; #dimension de l'espace, ici 2D pour visualisation

x=matrix(runif(N*p,-2,2),N,2); #matrice échantillon, position des points
u=rep(0,N); #matrice des classes

#création d'un échantillon de taille N, 2 classes, linéairement séparable
droite=matrix(c(2,1),p,1); #droite de séparabilité
c=0
indicpos=NULL;
indicneg=NULL;
for(i in 1:N)
{
aux=x[i,]%*%droite;
valxi=aux[1,1];
u[i]=ifelse((valxi+c)>0,1,-1);
if((valxi+c)>0)
{indicpos=c(indicpos,i);}
else
{indicneg=c(indicneg,i);}
};


####################################################
####################################################
#Methodologie : perceptron

####################################################
#initialisation des points du perceptron
w=matrix(runif(2,-1,1),2,1); #matrice de poids
w0=w; #sauvegarde des conditions initiales (poids)
tmax=20; #nb d'iterations de l'algorithme d'apprentissage:tmax*N
alpha=0.1; #gain d'apprentissage
tracew=matrix(rep(0,N*tmax*p),N*tmax,p); #tracabilite de l'evolution des poids


####################################################
for(t in 1:(tmax*N))
{
k=1+trunc(N*runif(1)); #indice entre 1 et N
xk=x[k,];
aux=xk%*%w;
val=aux[1,1];
yk=ifelse(val>0,1,-1);
uk=u[k];
if(!(yk==uk))
{ s=ifelse(uk==1,1,-1);
deltaw=alpha*s*xk;
w=w+deltaw;
};
tracew[t,]=w;
};


####################################################
#visualisation/conditions initiales
plot(x[,1],x[,2], pch=19, col='cyan');
points(x[indicneg,1],x[indicneg,2], pch=19, col='blue');
a0=-w0[1,1]/w0[2,1];
b0=0;
abline(b0,a0, col='red');


####################################################
#visualisation/ apres convergence (5pas puis 10 puis 15 pas)
aw=-tracew[5,1]/tracew[5,2]; bw=0;
abline(bw,aw, col='blue', 'lty'=2);

aw=-tracew[10,1]/tracew[10,2]; bw=0;
abline(bw,aw,col='purple', 'lty'=4);

aw=-tracew[15,1]/tracew[15,2]; bw=0;
abline(bw,aw,col='yellow', 'lty'=4);
####################################################
#visualisation/ apres convergence
aw=-w[1,1]/w[2,1]; bw=0;
abline(bw,aw, col='green', 'lwd'=2);



##############################################################################


Dernière édition par le Mar 22 Nov à 16:02, édité 13 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://mastertwo.jeun.fr
Admin
Admin


Nombre de messages : 418
Date d'inscription : 27/09/2005

MessageSujet: Re: algorithme du perceptron   Ven 4 Nov à 1:47

Perceptron - 2e partie

#Génération artificielle de deux classes linéairement séparables sur nuage de points aléatoire

N=50; #Nb de points au total;
p=2; #dimension de l'espace, ici 2D pour visualisation

x=matrix(runif(N*p,-2,2),N,2); #matrice échantillon, position des points
u=rep(0,N); #matrice des classes

#création d'un échantillon de taille N, 2 classes, linéairement séparable
droite=matrix(c(2,1),p,1); #droite de séparabilité
c=0
indicpos=NULL;
indicneg=NULL;
for(i in 1:N)
{
aux=x[i,]%*%droite;
valxi=aux[1,1];
u[i]=ifelse((valxi+c)>0,1,-1);
if((valxi+c)>0)
{indicpos=c(indicpos,i);}
else
{indicneg=c(indicneg,i);}
};

###############################################################################
###############################################################################
#Methodologie : perceptron

###############################################################################
#initialisation des points du perceptron
w=matrix(runif(2,-1,1),2,1); #matrice de points
w0=w; #sauvegarde des conditions initiales (poids)
tmax=20; #nb d'iterations de l'algorithme d'apprentissage:tmax*N
alpha=0.1; #gain d'apprentissage
tracew=matrix(rep(0,N*tmax*p),N*tmax,p); #tracabilite de l'evolution des poids

####################################################
for(t in 1:(tmax*N))
{
k=1+trunc(N*runif(1)); #indice entre 1 et N
xk=x[k,];
aux=xk%*%w;
val=aux[1,1];
yk=ifelse(val>0,1,-1);
uk=u[k];
if(!(yk==uk))
{ s=ifelse(uk==1,1,-1);
deltaw=alpha*s*xk;
w=w+deltaw;
};
tracew[t,]=w;
};

####################################################
#visualisation/conditions initiales
plot(x[,1],x[,2], pch=19, col='cyan');
points(x[indicneg,1],x[indicneg,2], pch=19, col='blue');
a0=-w0[1,1]/w0[2,1];
b0=0;
abline(b0,a0, col='red');

####################################################
#visualisation/ apres convergence (5pas)
aw=-tracew[5,1]/tracew[5,2]; bw=0;
abline(bw,aw, col='blue', 'Ity'=2);

aw=-tracew[10,1]/tracew[10,2]; bw=0;
abline(bw,aw,col='blue', 'Ity'=4);

####################################################
#visualisation/ apres convergence
aw=-w[1,1]/w[2,1]; bw=0;
abline(bw,aw, col='green', 'lwd'=2);



x11()

plot(1:1000,tracew[,1], pch=20)
lines(1:1000,tracew[,1], pch=20)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://mastertwo.jeun.fr
Admin
Admin


Nombre de messages : 418
Date d'inscription : 27/09/2005

MessageSujet: Re: algorithme du perceptron   Ven 4 Nov à 2:39

####################################################
for(t in 1:tmax)
{
for(k in 1:N)
{
xk=x[k,];
aux=xk%*%w;
val=aux[1,1];
yk=ifelse(val>0,1,-1);
uk=u[k];
if(!(yk==uk))
{ s=ifelse(uk==1,1,-1);
deltaw=alpha*s*xk;
w=w+deltaw;
};
tracew[t,]=w;
};
};

####################################################
#visualisation/conditions initiales
plot(x[,1],x[,2], pch=19, col='cyan');
points(x[indicneg,1],x[indicneg,2], pch=19, col='blue');
a0=-w0[1,1]/w0[2,1];
b0=0;
abline(b0,a0, col='red');

####################################################
#visualisation/ apres convergence (5pas)
aw=-tracew[5,1]/tracew[5,2]; bw=0;
abline(bw,aw, col='blue', 'lty'=2);

aw=-tracew[10,1]/tracew[10,2]; bw=0;
abline(bw,aw,col='blue', 'lty'=4);

####################################################
#visualisation/ apres convergence
aw=-w[1,1]/w[2,1]; bw=0;
abline(bw,aw, col='green', 'lwd'=2);



x11()

plot(1:1000,tracew[,1], pch=20)
lines(1:1000,tracew[,1], pch=20)


Dernière édition par le Mar 22 Nov à 16:22, édité 2 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://mastertwo.jeun.fr
Admin
Admin


Nombre de messages : 418
Date d'inscription : 27/09/2005

MessageSujet: Re: algorithme du perceptron   Mar 15 Nov à 3:04

???????

rm(list=ls());

#Génération artificielle de deux classes linéairement séparables sur nuage de points aléatoire

N=50; #Nb de points au total;
p=2; #dimension de l'espace, ici 2D pour visualisation

x=matrix(runif(N*p,-2,2),N,2); #matrice échantillon, position des points
u=rep(0,N); #matrice des classes

#création d'un échantillon de taille N, 2 classes, linéairement séparable
droite=matrix(c(2,1),p,1); #droite de séparabilité
c=0
indicpos=NULL;
indicneg=NULL;
for(i in 1:N)
{
aux=x[i,]%*%droite;
valxi=aux[1,1];
u[i]=ifelse((valxi+c)>0,1,-1);
if((valxi+c)>0)
{indicpos=c(indicpos,i);}
else
{indicneg=c(indicneg,i);}
};

###############################################################################
###############################################################################
#Methodologie : perceptron

###############################################################################
#initialisation des points du perceptron
w=matrix(runif(2,-1,1),2,1); #matrice de points
w0=w; #sauvegarde des conditions initiales (poids)
tmax=20; #nb d'iterations de l'algorithme d'apprentissage:tmax*N
alpha=0.1; #gain d'apprentissage
tracew=matrix(rep(0,N*tmax*p),N*tmax,p); #tracabilite de l'evolution des poids
dessin=matrix(rep(0,tmax*p),tmax,p);

####################################################
for(t in 1:(tmax*N))
{
k=1+trunc(N*runif(1)); #indice entre 1 et N
xk=x[k,];
aux=xk%*%w;
val=aux[1,1];
yk=ifelse(val>0,1,-1);
uk=u[k];
if(!(yk==uk))
{ s=ifelse(uk==1,1,-1);
deltaw=alpha*s*xk;
w=w+deltaw;
};
tracew[t,]=w;
};


####################################################
RempG=0
for(t in 1:tmax)
{
for (k in 1:N) #indice entre 1 et N
{
xk=x[k,];
aux=xk%*%w;
val=aux[1,1];
yk=ifelse(val>0,1,-1);
uk=u[k];
Rempk=-aux%*%uk
if(!(yk==uk))
{ s=ifelse(uk==1,1,-1);
deltaw=alpha*s*xk;
w=w+deltaw;
RempG=RempG+Rempk
};
dessin[t,]=RempG;
};
};

####################################################
#visualisation/conditions initiales
plot(x[,1],x[,2], pch=19, col='cyan');
points(x[indicneg,1],x[indicneg,2], pch=19, col='blue');
a0=-w0[1,1]/w0[2,1];
b0=0;
abline(b0,a0, col='red');

####################################################
#visualisation/ apres convergence (5pas)
aw=-tracew[5,1]/tracew[5,2]; bw=0;
abline(bw,aw, col='blue', 'lty'=2);

aw=-tracew[10,1]/tracew[10,2]; bw=0;
abline(bw,aw,col='blue', 'lty'=4);

####################################################
#visualisation/ apres convergence
aw=-w[1,1]/w[2,1]; bw=0;
abline(bw,aw, col='green', 'lwd'=2);



x11()

plot(1:1000,tracew[,1], pch=20)
lines(1:1000,tracew[,1], pch=20)


x11()

plot(1:20,dessin[,1], pch=20)
lines(1:20,dessin[,1], pch=20)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://mastertwo.jeun.fr
Contenu sponsorisé




MessageSujet: Re: algorithme du perceptron   Aujourd'hui à 9:09

Revenir en haut Aller en bas
 
algorithme du perceptron
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» L'algorithme du cycle des empires
» algorithme
» Un algorithme écologique
» le perceptron multicouche
» [Salon] L'algorithme.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
mon master2 ISIFAR :: 1er semestre :: Data Mining : Apprentissage-
Sauter vers: