k-means算法的代码
时间: 2023-12-09 15:04:10 浏览: 49
以下是 Python 代码实现 k-means 算法:
```python
import numpy as np
def kmeans(X, K, max_iters):
"""
K-means 算法的实现
参数:
X:数据集,每行是一个样本
K:簇的个数
max_iters:最大迭代次数
返回值:
centroids:聚类中心
idx:每个样本所属的簇
"""
m, n = X.shape # m 为样本数,n 为特征数
centroids = X[np.random.choice(m, K, replace=False), :] # 随机初始化聚类中心
idx = np.zeros(m)
for i in range(max_iters):
# 计算每个样本到聚类中心的距离
distances = np.sqrt(((X - centroids[:, np.newaxis])**2).sum(axis=2))
# 分配每个样本到最近的聚类中心
idx = np.argmin(distances, axis=0)
# 更新聚类中心
for j in range(K):
centroids[j, :] = np.mean(X[idx == j, :], axis=0)
return centroids, idx
```
其中 `X` 是一个二维数组,每行是一个样本;`K` 是簇的个数;`max_iters` 是最大迭代次数。函数返回聚类中心 `centroids` 和每个样本所属的簇 `idx`。在函数内部,我们首先随机初始化聚类中心,然后进行迭代。在每次迭代中,我们先计算每个样本到聚类中心的距离,然后分配每个样本到最近的聚类中心,最后更新聚类中心。
阅读全文