Clustering hiérarchique
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 linkage
Attributs :
Paramètre
Description
Y
Un 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. method
La 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 metric
La 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_ordering
Si 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, dendrogram
importe deux fonctions clés du module scipy.cluster.hierarchy :linkage
calcule la matrice de liaison (ou linkage matrix) qui encode la fusion progressive des clusters.dendrogram
génère la représentation graphique (arbre) du clustering hiérarchique.import matplotlib.pyplot as plt
importe matplotlib pour afficher le dendrogramme.import numpy as np
importe 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.