Clustering hiérarchique
Le clustering hiérarchique est une méthode d’apprentissage non supervisé utilisée pour regrouper des observations en clusters selon leur similarité, en construisant une hiérarchie de groupes imbriqués. L’objectif est de représenter les relations entre les observations sous forme d’un arbre (dendrogramme).
L’algorithme peut être agglomératif (fusionner progressivement les observations en clusters) ou divisif (diviser un cluster global en sous-clusters). Les distances entre observations ou clusters sont utilisées pour déterminer quelles observations ou groupes fusionner ou séparer à chaque étape.
Le clustering hiérarchique est utilisé en science des données, biologie, marketing et analyse sociale pour identifier des structures dans les données et visualiser les relations entre groupes.
La qualité du clustering peut être évaluée avec des métriques comme la silhouette ou l’indice de cophenetic.
En résumé, le clustering hiérarchique permet d’analyser et visualiser la structure des données en construisant des clusters imbriqués sans fixer le nombre de clusters à l’avance.
Fonctions :
-
linkage()
La fonction linkage() de scipy.cluster.hierarchy permet de réaliser une hiérarchisation des données pour construire un dendrogramme. Elle est utilisée pour effectuer un clustering hiérarchique, un algorithme qui regroupe des objets similaires dans des clusters. L'algorithme construit un arbre binaire (dendrogramme) représentant les relations entre les objets. Il existe plusieurs méthodes pour calculer la distance entre les clusters (par exemple, méthode de l'auto-liaison, de la moyenne, de la complète, etc.).
Importation :
from scipy.cluster.hierarchy import linkageAttributs :
Paramètre
Description
YUn tableau 2D représentant les distances entre les points ou les objets. Cela peut être une matrice de distance ou les données à partir desquelles les distances seront calculées. methodLa méthode de liaison utilisée pour regrouper les objets. Cela peut être l'une des méthodes suivantes : - 'single' : auto-liaison (distance minimale) - 'complete' : liaison complète (distance maximale) - 'average' : liaison moyenne - 'weighted' : liaison pondérée - 'centroid' : liaison centrée - 'median' : liaison médiane - 'ward' : minimisation de la variance metricLa mesure de distance utilisée pour calculer les distances entre les objets. Par défaut, c'est la distance euclidienne ('euclidean'). D'autres options incluent 'cityblock', 'cosine', etc. optimal_orderingSi défini à `True`, cette option permet de réorganiser les objets afin de minimiser la longueur totale des branches du dendrogramme. Par défaut, c'est `False`. Exemple de code :
from scipy.cluster.hierarchy import linkage, dendrogram import matplotlib.pyplot as plt import numpy as np # Exemple de données : 5 points 2D data = np.array([ [1, 2], [2, 2], [5, 8], [6, 8], [7, 8] ]) # Calcul de la matrice linkage (méthode 'ward') Z = linkage(data, method='ward') # Affichage du dendrogramme plt.figure(figsize=(8, 4)) dendrogram(Z) plt.title("Dendrogramme clustering hiérarchique") plt.xlabel("Index des points") plt.ylabel("Distance") plt.show()
Explication du code :
from scipy.cluster.hierarchy import linkage, dendrogramimporte deux fonctions clés du module scipy.cluster.hierarchy :
linkagecalcule la matrice de liaison (ou linkage matrix) qui encode la fusion progressive des clusters.
dendrogramgénère la représentation graphique (arbre) du clustering hiérarchique.
import matplotlib.pyplot as pltimporte matplotlib pour afficher le dendrogramme.
import numpy as npimporte NumPy pour manipuler les tableaux numériques.Définition des données
data = np.array([...])crée un tableau NumPy contenant 5 points en 2 dimensions.
Ces points serviront d’exemple pour le clustering.Calcul de la matrice linkage
Z = linkage(data, method='ward')calcule la matrice de liaison selon la méthode de Ward, qui minimise la variance intra-cluster à chaque fusion.
Cette matrice contient les informations sur les distances entre clusters fusionnés successivement.Affichage du dendrogramme
plt.figure(figsize=(8, 4))crée une figure matplotlib de taille 8x4 pouces.
dendrogram(Z)trace le dendrogramme, représentant l’arbre de fusion des clusters. Chaque fusion est visualisée par une ligne horizontale dont la hauteur correspond à la distance entre clusters.
plt.title("Dendrogramme clustering hiérarchique")ajoute un titre au graphique.
plt.xlabel("Index des points")etplt.ylabel("Distance")ajoutent des labels aux axes pour indiquer respectivement les indices des points originaux et la distance de fusion.
plt.show()affiche le dendrogramme.