@staticmethod defassign(centers, nda): n = nda.shape[0] labels = np.empty(n) for i, arr in enumerate(nda): labels[i] = KMeans.nearest_center(centers, arr) return labels
@staticmethod defupdate(nda, labels, k): centers = np.empty(k) for i in range(k): center = KMeans.cal_center(nda, labels, i) centers[i] = center return centers
@staticmethod defnearest_center(centers, nda): j = -1 min_dis = np.PINF for i, center in enumerate(centers): dis = KMeans.distance(center, nda) if dis < min_dis: min_dis = dis j = i return j