Clustering hiérarchique
Le clustering hiérarchique est une technique d'apprentissage automatique utilisée pour regrouper des points de données en clusters en fonction de leurs similarités. C'est un algorithme puissant qui permet de découvrir des motifs et des structures cachés au sein d'un jeu de données. Dans cet article, nous explorerons le concept du clustering hiérarchique, ses types et sa mise en œuvre en Python.
Qu'est-ce que le clustering hiérarchique ?
Le clustering hiérarchique est une technique utilisée pour regrouper des objets similaires en clusters. Il repose sur le principe de regrouper les objets similaires, puis de les fusionner progressivement en clusters de plus en plus grands jusqu'à ce que tous les objets appartiennent à un seul cluster. La sortie de l'algorithme de clustering hiérarchique est un dendrogramme, un diagramme en forme d'arbre qui montre les relations hiérarchiques entre les clusters.
Types de clustering hiérarchique
Il existe deux types principaux de clustering hiérarchique :
- Clustering agglomératif : Il s'agit d'une approche ascendante où chaque point de données est traité comme un cluster séparé, puis fusionné pour former des clusters plus grands.
- Clustering divisif : Il s'agit d'une approche descendante où tous les points de données sont traités comme un seul cluster, puis divisés récursivement en clusters plus petits.
Comment fonctionne le clustering hiérarchique ?
Le clustering hiérarchique fonctionne en calculant la distance entre toutes les paires de points de données, puis en fusionnant itérativement la paire de clusters la plus proche jusqu'à ce que tous les points de données appartiennent à un seul cluster. La distance entre deux clusters peut être calculée à l'aide de diverses métriques de distance telles que la distance euclidienne, la distance de Manhattan et la similarité cosinus.
Mise en œuvre du clustering hiérarchique en Python
Python propose plusieurs bibliothèques pour implémenter le clustering hiérarchique, telles que Scikit-learn, SciPy et PyClustering. Ici, nous utiliserons la bibliothèque Scikit-learn pour mettre en œuvre le clustering hiérarchique.
Étape 1 : Importation des bibliothèques et chargement des données
Chargement des données pour le clustering hiérarchique en Python
import pandas as pd
import numpy as np
from sklearn.cluster import AgglomerativeClustering
from sklearn.preprocessing import StandardScaler
# Load data
data = pd.read_csv('data.csv')
X = data.iloc[:, [0, 1, 2]].valuesÉtape 2 : Prétraitement des données
Avant d'appliquer le clustering hiérarchique, nous devons prétraiter les données en les mettant à l'échelle pour qu'elles aient une moyenne nulle et une variance unitaire. Cela permet de s'assurer que toutes les variables contribuent également au processus de clustering.
Prétraitement des données pour le clustering hiérarchique en Python
# Scale data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)Étape 3 : Application du clustering hiérarchique
Nous utiliserons la classe AgglomerativeClustering de Scikit-learn pour appliquer le clustering hiérarchique à notre jeu de données. Nous définirons le nombre de clusters à 3 et utiliserons la méthode de liaison de Ward, qui minimise la variance des clusters fusionnés.
Application du clustering hiérarchique à notre jeu de données en Python
# Apply hierarchical clustering
hc = AgglomerativeClustering(n_clusters=3, linkage='ward')
y_hc = hc.fit_predict(X_scaled)Étape 4 : Visualisation des clusters
Nous pouvons visualiser les clusters en traçant un nuage de points des données, où différentes couleurs représentent les différents clusters.
Visualisation des clusters en traçant un nuage de points des données avec différentes couleurs représentant les différents clusters en Python
import matplotlib.pyplot as plt
# Create scatter plot
plt.scatter(X_scaled[y_hc == 0, 0], X_scaled[y_hc == 0, 1], s=100, c='red', label='Cluster 1')
plt.scatter(X_scaled[y_hc == 1, 0], X_scaled[y_hc == 1, 1], s=100, c='blue', label='Cluster 2')
plt.scatter(X_scaled[y_hc == 2, 0], X_scaled[y_hc == 2, 1], s=100, c='green', label='Cluster 3')
# Add labels and title
plt.title('Hierarchical Clustering')
plt.xlabel('X')
plt.ylabel('Y')
# Add legend
plt.legend()
# Show plot
plt.show()Dans le code ci-dessus, nous utilisons l'indexation booléenne pour sélectionner les points de données appartenant à chaque cluster et les tracer avec une couleur différente. Nous ajoutons également des étiquettes aux axes, un titre au graphique et une légende pour identifier les différents clusters. Enfin, nous affichons le graphique à l'aide de la fonction show().
Conclusion
Le clustering hiérarchique est une technique puissante qui permet de révéler des structures cachées au sein d'un jeu de données. C'est un algorithme simple et intuitif qui peut être appliqué à une grande variété de types et de tailles de données. Dans cet article, nous avons exploré le concept du clustering hiérarchique, ses types et sa mise en œuvre en Python à l'aide de la bibliothèque Scikit-learn.
En suivant les étapes décrites dans cet article, vous pouvez appliquer le clustering hiérarchique à votre propre jeu de données et visualiser les clusters résultants. Cela peut aider à identifier des motifs et des relations au sein des données qui pourraient être utiles pour des analyses ultérieures ou la prise de décision.
Si vous souhaitez en savoir plus sur le clustering hiérarchique ou d'autres techniques d'apprentissage automatique, de nombreuses ressources sont disponibles en ligne, notamment des tutoriels, des cours et des livres. En continuant à apprendre et à explorer de nouvelles techniques, vous resterez à la pointe et deviendrez un data scientist plus compétent.