使用Python,完成K-means算法的程序实现
时间: 2024-03-23 21:38:20 浏览: 76
底层实现_k-means底层实现_K._
好的,以下是使用Python实现K-means算法的程序:
```python
import numpy as np
import random
def kmeans(data, k):
# 随机初始化k个中心点
centers = random.sample(data, k)
while True:
# 创建k个空簇
clusters = [[] for _ in range(k)]
# 遍历每个数据点,将其归入距离最近的簇
for point in data:
distances = [np.linalg.norm(point - center) for center in centers]
closest_center = np.argmin(distances)
clusters[closest_center].append(point)
# 计算新的中心点
new_centers = []
for cluster in clusters:
new_center = np.mean(cluster, axis=0)
new_centers.append(new_center)
# 如果中心点没有变化,则结束迭代
if np.allclose(centers, new_centers):
break
centers = new_centers
return clusters
```
其中,data是数据集,k是簇的个数。程序首先随机初始化k个中心点,然后在一个while循环中迭代执行以下步骤:
1. 创建k个空簇;
2. 遍历每个数据点,将其归入距离最近的簇;
3. 计算新的中心点;
4. 如果中心点没有变化,则结束迭代。
最后,程序返回簇的列表,其中每个簇都是一个列表,包含该簇中的所有数据点。
阅读全文