Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Clustering K-Means | Algorithmes de Regroupement de Base
Analyse de Cluster
course content

Contenu du cours

Analyse de Cluster

Analyse de Cluster

1. Qu'est-ce Que le Clustering?
2. Algorithmes de Regroupement de Base
3. Comment Choisir le Meilleur Modèle ?

book
Clustering K-Means

Le clustering K-means est l'algorithme de clustering le plus populaire utilisé pour regrouper des points de données similaires dans un ensemble de données. L'algorithme fonctionne en sélectionnant d'abord une valeur k, qui représente le nombre de clusters ou de groupes que nous voulons identifier dans les données.

Décrivons brièvement toutes les étapes du fonctionnement de cet algorithme:

Étape 1. L'algorithme initialise k points aléatoires dans l'ensemble de données, appelés centroïdes;

Étape 2. Chaque point de données est ensuite assigné au centroïde le plus proche en fonction d'une métrique de distance, telle que la distance euclidienne. Ce processus crée k clusters, chaque cluster étant constitué des points de données les plus proches du centroïde ;

Étape 3. Les centroïdes sont déplacés vers le centre de chaque cluster ;

Étape 4. Les étapes 2 et 3 sont répétées. L'algorithme met à jour de manière itérative les centroïdes et réassigne les points de données jusqu'à la convergence, lorsque les centroïdes ne bougent plus.

Nous pouvons voir que cet algorithme est assez simple et intuitif, mais il présente quelques inconvénients majeurs :

  • nous devons choisir manuellement le nombre de clusters ;
  • l'algorithme dépend des valeurs initiales des centroïdes ;
  • l'algorithme est fortement affecté par les valeurs aberrantes.

Regardons l'implémentation de K-means en Python :

12345678910111213141516171819202122232425262728
from sklearn.cluster import KMeans import numpy as np import matplotlib.pyplot as plt import warnings warnings.filterwarnings('ignore') # Create toy dataset to show K-means clustering model X = np.array([[1, 3], [2, 1], [1, 5], [8, 4], [11, 3], [15, 0], [6,1], [10,3], [3,7], [4,5], [12,7]]) # Fit K-means model for 2 clusters kmeans = KMeans(n_clusters=2).fit(X) # Print labels for train data print('Train labels are: ', kmeans.labels_) # Print coordinates of cluster centers print('Cluster centers are: ', kmeans.cluster_centers_) # Visualize the results of clustering fig, axes = plt.subplots(1, 2) axes[0].scatter(X[:, 0], X[:, 1], c=kmeans.labels_, s=50, cmap='tab20b') axes[0].scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], c='red', s=100) axes[0].set_title('Train data points') # Provide predictions for new data predicted_labels = kmeans.predict([[10, 5], [4, 2], [3, 3], [6, 3]]) print('Predicted labels are: ', predicted_labels) # Visualize prediction results axes[1].scatter([10, 4, 3, 6], [5, 2, 3, 3], c=predicted_labels, s=50, cmap='tab20b') axes[1].scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], c='red', s=100) axes[1].set_title('Test data points')
copy

Dans le code ci-dessus, nous avons utilisé les éléments suivants :

  1. La classe Kmeans de sklearn. cluster. Le paramètre n_clusters détermine le nombre de clusters dans les données ;
  2. La méthode .fit(X) de la classe Kmeans ajuste notre modèle - détermine les clusters et leurs centres selon les données X ;
  3. L'attribut .labels_ de la classe KMeans stocke les numéros de cluster pour chaque échantillon de données d'entraînement (0 cluster, 1 cluster, 2 cluster,...);
  4. L'attribut .cluster_centers_ de la classe KMeans stocke les coordonnées des centres de clusters ajustés par l'algorithme ;
  5. La méthode .predict() de la classe Kmeans est utilisée pour prédire les étiquettes de nouveaux points.
Devons-nous utiliser l'algorithme K-means pour les tâches de clustering si nous ne pouvons pas déterminer manuellement le nombre de clusters dans lesquels nos données doivent être divisées ?

Devons-nous utiliser l'algorithme K-means pour les tâches de clustering si nous ne pouvons pas déterminer manuellement le nombre de clusters dans lesquels nos données doivent être divisées ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 1
We're sorry to hear that something went wrong. What happened?
some-alt