Implémente l'algorithme K-Means pour regrouper les données en k clusters.
Args:
X (numpy.ndarray): Les données à regrouper.
k (int): Le nombre de clusters à former.
max_iterations (int, optional): Le nombre maximal d'itérations. Défaut à 100.
distance=0
ifx1.shape==x2.shape:
foriinrange(x1.size):
distance+=np.abs(x1[i]-x2[i])
returndistance
Returns:
tuple: Une paire contenant les étiquettes de cluster et les centroïdes finaux.
"""
# Initialisation des k-centroïdes de manière aléatoire
np.random.seed(0)
centroids=X[np.random.choice(X.shape[0],k,replace=False)]# séléctionne k points aléatoirement dans la liste X
old_centroids=np.zeros(centroids.shape)
new_centroids=centroids.copy()
distances_history=[]# Pour stocker la somme des distances
iteration=0
# pour vérifier que les centroides ne changent plus , il faut check que l'ancien et le nouveau soient pareils , on ajoute tout de même un nombre d'itérations max pour ne pas tourner à l'infini