Implement k-means clustering for a set of 2D points using Lloyd's algorithm. Given points and an integer k, partition the points into k clusters by repeatedly assigning each point to the nearest centroid and recomputing centroids until convergence or a fixed iteration limit.
Write a function that takes:
points: a list of 2D points, where each point is [x, y]k: the number of clustersmax_iters: the maximum number of iterations to runReturn a tuple (centroids, labels), where:
centroids is a list of k centroids, each as [x, y]labels is a list of length len(points), where labels[i] is the cluster index assigned to points[i]Use Euclidean distance. If a cluster becomes empty, keep its centroid unchanged. Initialize centroids as the first k points.
def k_means(points, k, max_iters):