Vous êtes sur la page 1sur 11

Université Sultan Moulay Slimane

Faculté Polydisciplinaire

Département de Mathèmatique et Informatique

- Béni Mellal-

Master : Ingénierie des systèmes informatiques

Master : Ingénierie des Systèmes Informatiques


TP 8: Implémentation de l'algorithme de clustering k-means Hadoop

Réalisé par : Encadré par :


- OUCHALLA Maryem
- Pr. Biniz Mohamed

Année universitaire : 2020-2021


Sommaire
1. Introduction ................................................................................................. 3
2.Fonctionement K-Means : .............................................................................. 3
a) Mapper : ................................................................................................... 3
b) Combiner : ................................................................................................ 3
c) Reducer : ................................................................................................... 3
3.Implémentation : ............................................................................................ 3
a) Les classes :Class Point .............................................................................. 3
b) La classe Main : ......................................................................................... 6
c) La classe Mapper : .................................................................................... 9
d) Reducer : ................................................................................................... 9
4. Exécution et Résultats : ............................................................................... 10
1. Introduction

K-Means est un algorithme de clustering qui partitionne un ensemble de points de données en


k clusters. Ce algorithme est couramment utilisé sur de grands ensembles de données, en
raison des caractéristiques de l'algorithme, il est un bon candidat pour la parallélisassions.

Le clustering K-means fonctionne comme un processus itératif dans lequel, à chaque


itération, il calcule la distance entre les points de données et les centres de gravité, qui sont
initialisés aléatoirement au début de l'algorithme.

L’objectif de ce TP est d’implémenter l’algorithme Kmeans en utilisant Hadoop avec le


modèle MapReduce.

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é :

 calculer différents types de distances. En fonction de la valeur h :

 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 ) :

 Les fonctions readFields et write exécutent un champ par champ dé sérialisation et


sérialisation du point respectivement.
 la totalité de classe :
b) La classe Main :

Notre k-means a les paramètres suivants:

 DATASET_SIZE :est le nombre de points dans le dataset .


 DISTANCE :est le type de distance à utiliser.
 K :est le nombre de partitions à trouver.
 THRESHOLD : est le seuil du critère d'arrêt.
 MAX_ITERATIONS : est le nombre maximum d'itérations et est utilisé comme
critère d'arrêt supplémentaire.

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 :

L'ensemble de données de validation comprend 1 000 points bidimensionnels répartis en 4


clusters bien définis.
Pour les centres de gravités , j’ai ces valeurs :

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 .

Vous aimerez peut-être aussi