Я реализую алгоритм K средних в python, и я застрял в той части, в которой мы предполагаем обновить центроиды.Я создал что-то, что работает, но на самом деле он не похож на python.Я знаю, что это может быть написано лучше, и я хотел бы получить некоторые предложения, например, как улучшить гистограмму, которая подсчитывает, сколько точек назначено каждому центроиду.
Вот мой код:
def updateCentroids(centroids, pixelList):
k = len(centroids)
centoidsCount = [0]*k #couts how many pixels classified for each cent.
centroidsSum = np.zeros([k, 3])#sum value of centroids
for pixel in pixelList:
index = 0
#find whitch centroid equals
for centroid in centroids:
if np.array_equal(pixel.classification, centroid):
centoidsCount[index] += 1
centroidsSum[index] += pixel.point
break
index += 1
index = 0
for centroid in centroidsSum:
centroids[index] = centroid/centoidsCount[index]
index += 1