Académique Documents
Professionnel Documents
Culture Documents
Faculté Polydisciplinaire
- Béni Mellal-
2.Fonctionement K-Means :
L'algorithme K-Means utilisant le modèle de MapReduce est divisé en trois parties principales:
a) Mapper :
Le mapper calcule la distance entre le point de données et chaque centroïde. Émet ensuite
l'index du centre de gravité le plus proche et le point de données.
b) Combiner :
À chaque étape, nous devons additionner les points de données appartenant à un cluster pour
calculer le centroïde (moyenne arithmétique des points). La somme étant une fonction
associative et commutative, notre algorithme peut bénéficier de l'utilisation d'un combiner
pour réduire la quantité de données à transmettre aux réducteurs.
c) Reducer :
Le réducteur calcule la nouvelle approximation du centre de gravité et l’émet. Le résultat de
l'étape MapReduce sera le même si le combineur n'est pas appelé par le framework Hadoop.
3.Implémentation :
a) Les classes :Class Point
Le point est l'objet de base de notre implémentation , Le point représente à la fois un point
unique, qui peut être un point de données ou un centre de gravité, et une somme de points .
La classe implémente toutes les opérations requises par l'algorithme, telles que la somme
entre les points, la distance entre les points et le calcul du centroïde.
Puisque le code de classe est trop langue on va s’intéresser aux methodes importante qui ont
été implémenté :
Le centroïde est la position moyenne arithmétique des points d'un cluster. La fonction
moyenne calcule le centroïde à partir d'une somme de points ( calculé dans la fonction
somme ) :
Lors de la première itération, les centres de gravité sont échantillonnés au hasard à partir du
dataset . L'opération de lecture pouvant être une tâche lourde dans le cas de grands ensembles
de données, nous l'avons optimisée pour que le fichier soit analysé au plus une fois.
Le fichier est analysé pour récupérer la valeur des centres de gravité. L'analyse se termine à la
ligne sur laquelle se trouve le dernier centroïde .(br.close()) :
la totalité de classe :
c) La classe Mapper :
d) Reducer :
Il additionne les points et calcule le centroïde comme point moyen. Le résultat est le même
que le combiner s'exécute ou non.
4. Exécution et Résultats :
Donc , comme conclusion on peut dire que l’implémentation en utilisant la fonction sklearn
KMeans () du module cluster , donne les mêmes centres de gravités en utilisant spark , déjà
ce qu’on a vu dans les autres Tps , sauf le temps d’exécution et le nombre d’itérations qui
changent .