基于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()