PANDORE Version 6 |
GREYC-IMAGE |
pknn
Classification selon les K plus proches voisins.
Synopsis
pknn attr_base attr_in attr_out k [col_base|-] [col_in|-] [col_out|-]
Description
L'opépateur pknn effectue une classification selon les K
plus proches voisins. Un individu est classé selon la classe
majoritaire parmi ses K plus proches voisins de l'espace d'apprentissage.
La mesure de distance entre deux objets xi and xj
utilise la distance euclidienne :
Dij = [ SUM{d=1;n} (xid - xjd)2 ]1/2
où xid est la caractéristique d de l'objet i
et xjd est la caractéristique d for de l'object j.
Paramètres
- attr_base est le nom de base des vecteurs de caractéristiques
des individus déjà classés. Les n caractéristiques
de chaque individu sont stockées sous forme de tableaux
attr_base.1, attr_base.2, ...,
attr_base.n, tous de même type. Le tableau
attr_base.C doit contenir les numéros de classe de chaque
individu. Si ce tableau est absent, la classe du i-ème
individu est i.
- attr_in est le nom de base des vecteurs de caractéristiques
à classer. Les caractéristiques de chaque individu doivent
se trouver dans les tableaux attr_in.1, attr_in.2,
..., attr_in.n.
- attr_out est le nom du vecteur d'Ulong qui contient
les classes déterminées pour chaque individu de col_in.
- k est le nombre de voisins à considérer
pour la classification.
Entrées
- col_base: une collection contenant les paramètres de la classification.
- col_in: une collection à classer.
Sorties
Résultat
Retourne SUCCESS ou FAILURE.
Exemples
Classification des bonbons de l'image jellybean.pan à partir d'un échantillon des différents types de bonbons stockés dans le dossier 'base' (Unix version):
# Learning
classes=1;
for i in base/*.pan
do
pim2array ind $i /tmp/tmp1
parraysize ind.1 /tmp/tmp1
size=`pstatus`
pcreatearray ind.C Ushort $size $classes | pcolcatenateitem /tmp/tmp1 - i-01.pan
if [ -f base.pan ]
then pcolcatenateitem i-01.pan base.pan base.pan
else cp i-01.pan base.pan
fi
classes=`expr $classes + 1`
done
# Classification
pproperty 0 jellybeans.pan
ncol=`pstatus`
pproperty 1 jellybeans.pan
nrow=`pstatus`
pim2array ind jellybeans.pan | pknn ind ind ind 10 base.pan - | parray2im $ncol $nrow 0 ind | pim2rg - out.pan
Voir aussi
Classification
Prototype C++
Errc PKnn(const std::string &a_base, const Collection &c_base,
const std::string &a_in, const Collection &c_in,
const std::string &a_out, Collection &c_out,
int K);
Auteur: Alexandre Duret-Lutz