kmeans算法实现代码
时间: 2023-10-29 15:06:10 浏览: 37
以下是Python实现的kmeans算法代码:
```
import numpy as np
class KMeans:
def __init__(self, k=2):
self.k = k
def fit(self, X):
# 1. 随机选择k个点作为聚类中心
centroids = X[np.random.choice(X.shape[0], self.k, replace=False)]
while True:
# 2. 分配每个点到最近的聚类中心
assignments = np.argmin(np.sqrt(((X - centroids[:, np.newaxis])**2).sum(axis=2)), axis=0)
# 3. 更新聚类中心
new_centroids = np.array([X[assignments == i].mean(axis=0) for i in range(self.k)])
# 4. 如果聚类中心不再变化,停止迭代
if np.allclose(centroids, new_centroids):
break
centroids = new_centroids
self.centroids = centroids
self.assignments = assignments
```
其中,`k`表示聚类数,`X`是一个$n \times d$的矩阵,其中$n$为数据点数,$d$为每个数据点的维度。函数`fit`会返回一个包含聚类中心和每个数据点所属的聚类编号的元组。