обновление центроидов в k-средних Python - PullRequest
1 голос
/ 14 апреля 2019

Я реализую алгоритм 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
...