基于sklearn的简单实现。

import numpy as np
from sklearn.cluster import k_means


def k_means_clustering(points, k, initial_centroids, max_iterations):
    # 实现代码
    initial_centroids = np.array(initial_centroids)
    centroid, labels, inertia = k_means(points, k, init=initial_centroids, max_iter=max_iterations)
    # print(centroid, labels, inertia)
    ans = []
    for p in centroid:
        # print(p)
        p = p.round(4)
        ans.append(tuple(p))
    return ans

def main():
    # Read input for points
    points = eval(input())

    # Read input for number of clusters
    k = int(input())

    # Read input for initial centroids
    initial_centroids = eval(input())

    # Read input for maximum iterations
    max_iterations = int(input())

    # Perform k-Means clustering
    final_centroids = k_means_clustering(points, k, initial_centroids, max_iterations)

    # Print the final centroids
    print(final_centroids)

if __name__ == "__main__":
    main()