Bonjour,

J'essaie d'implémenter le K-means pour un exemple simple.
a = (1,1)
b = (2,1)
c = (4,4)
d = (5,4)

Je suis à l'étape 2: j'ai calculé la distance euclidienne et j'ai déterminé la distance minimale. J'ai ensuite déterminé quels sont les points les plus proches des centres. MAIS le problème c'est que ma boucle n'est pas bien faite, ça ne marche que pour K=2 càd 2 clusters au début.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
# Calculer la distance euclidienne(centres_initiaux, points_restants)
liste_distances = []
print("Distance Euclidienne :")
for c in centres_initiaux:
        for pt in points_restants:
                distance_euclidienne = round(sqrt( (c[0]-pt[0])**2  +  (c[1]-pt[1])**2 ),2) # c[0] pt[0], c[1] pt[1]
                print("de(",c,",",pt, ") = ", distance_euclidienne)
 
                liste_distances.append(distance_euclidienne)
 
 
# Déterminer la distance minimale
i = 0
while i < K:
 
        if liste_distances[i] < liste_distances[i+2]: # de(i) 
            print(points_restants[i],"est plus proche de ",centres_initiaux[i]) # centre 0
        else:
            print(points_restants[i],"est plus proche de ",centres_initiaux[1]) # centre 1
        i = i+1
Je n'arrive pas à savoir comment changer cette boucle.
Merci