手撕kmeans要写完整代码吗