kmeans算法python代码实现
时间: 2023-07-25 12:24:31 浏览: 51
下面是一个简单的K-Means算法的Python实现:
```
import numpy as np
import random
def kmeans(data, k, max_iter=100):
# 随机初始化聚类中心
centroids = random.sample(list(data), k)
for i in range(max_iter):
# 分配数据点到簇
clusters = [[] for _ in range(k)]
for point in data:
closest_centroid = np.argmin([np.linalg.norm(point - c) for c in centroids])
clusters[closest_centroid].append(point)
# 更新聚类中心
new_centroids = [np.mean(cluster, axis=0) for cluster in clusters]
# 判断是否收敛
if np.allclose(centroids, new_centroids):
break
centroids = new_centroids
return clusters, centroids
```
其中,`data`为输入的数据点,类型为Numpy数组;`k`为簇的数量;`max_iter`为最大迭代次数。返回值为聚类结果和最终的聚类中心。
这个实现中,使用了Numpy库中的函数计算欧氏距离和均值,可以大大提高计算效率。在实际应用中,可以根据需要对算法进行优化,如使用并行计算或采用更高效的距离计算方法等。
阅读全文