我正在python中实现K均值算法,但我陷入了困境 我们假设要更新质心的部分。 我创建了一些可以正常工作的东西,但实际上却不是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