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") et plt.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.