用python手写k-means(k均值)聚类算法
时间: 2024-05-28 19:07:17 浏览: 101
课程实验基于python实现K均值(k-means)聚类算法源码+项目说明.zip
5星 · 资源好评率100%
K均值聚类算法是一种基于距离的聚类方法,它将数据分成 K 个类,每个类对应一个聚类中心。该算法通过不断地迭代来更新聚类中心,直到满足一定的停止条件为止。
下面是手写 K 均值聚类算法的实现步骤:
1. 随机初始化 K 个聚类中心。
2. 对于每个数据点,计算它与各个聚类中心的距离,并将它分配到距离最近的聚类中心所属的类别。
3. 对于每个类别,重新计算其聚类中心,即将该类别中所有数据点的坐标平均值作为新的聚类中心。
4. 重复步骤 2 和 3,直到满足停止条件(例如聚类中心不再变化)。
下面是一个简单的 Python 代码实现:
```python
import numpy as np
def k_means(X, K):
centers = X[np.random.choice(len(X), K, replace=False)]
while True:
# Assign points to the nearest center
labels = np.argmin(np.linalg.norm(X[:, np.newaxis] - centers, axis=2), axis=1)
# Update the centers
new_centers = np.array([X[labels == k].mean(axis=0) for k in range(K)])
# Check if the centers have converged
if np.allclose(centers, new_centers):
break
centers = new_centers
return labels, centers
```
其中,X 是数据集,K 是要分成的类别数。
阅读全文