Introduction à l'algorithme de clustering Kmeans
Qu'est-ce que le clustering K-Means ?
Le clustering K-Means est un algorithme d'apprentissage automatique non supervisé utilisé pour regrouper ou regrouper des points de données similaires dans un ensemble de données. Il s'agit d'un algorithme de partitionnement, qui divise les données en clusters sans chevauchement, où chaque point de données appartient à un seul cluster. Le clustering K-means vise à minimiser la somme des distances au carré entre chaque point de données et son centroïde attribué.
Théorie - Comment ça marche ?
Étape 1. Tout d'abord, nous devons décider de la valeur de K, qui est le nombre de clusters que nous voulons créer. La valeur de K peut être décidée soit au hasard, soit en utilisant une méthode comme Elbow, Silhouette.
Étape 2. Ensuite, nous sélectionnons au hasard K points de l'ensemble de données pour agir comme centroïdes initiaux pour chaque cluster.
Étape 3. Nous calculons ensuite la distance euclidienne entre chaque point de données et les centroïdes et attribuons le point de données au centroïde le plus proche, créant des clusters K.
Étape 4. Après avoir attribué tous les points de données à leur centroïde le plus proche, nous mettons à jour l'emplacement de chaque centroïde en calculant la moyenne de tous les points de données attribués à ce centroïde.
Étape 5. Nous répétons les étapes 3 et 4 jusqu'à ce que l'algorithme converge, ce qui signifie que les barycentres ne bougent plus ou que l'amélioration de la somme des distances au carré entre les points de données et leur barycentre assigné devient insignifiante.
Comment fonctionne le code ?
Importez les bibliothèques nécessaires :
import numpy as np
import matplotlib.pyplot as plt
X = np.random.rand(100, 2) * 2
plt.scatter(X[:, 0], X[:, 1])
plt.show()
K = 7
centroids = X[np.random.choice(len(X), K, replace=False)]
plt.scatter(X[:, 0], X[:, 1])
plt.scatter(centroids[:, 0], centroids[:, 1], marker='x', s=200, linewidths=3, color='r')
plt.show()
while True:
# Assign data points to the nearest centroid
distances = np.sqrt(((X - centroids[:, np.newaxis])**2).sum(axis=2))
labels = np.argmin(distances, axis=0)
# Calculate new centroids
new_centroids = np.array([X[labels == i].mean(axis=0) for i in range(K)])
# Check for convergence
if np.all(centroids == new_centroids):
break
# Update centroids
centroids = new_centroids
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.scatter(centroids[:, 0], centroids[:, 1], marker='x', s=200, linewidths=3, color='r')
plt.show()
Limites de l'algorithme K signifie
- K signifie que le regroupement est sensible à la sélection initiale du centroïde. L'algorithme peut converger vers une solution sous-optimale si les centroïdes initiaux ne sont pas sélectionnés de manière appropriée.
- K signifie que le clustering est sensible aux valeurs aberrantes
- K signifie que le clustering est sensible à la valeur de K. Si K n'est pas choisi correctement, cela peut donner des clusters sous-optimaux.
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































