K-means算法的核心函数
时间: 2023-06-10 14:08:44 浏览: 63
K-means算法的核心函数包括以下步骤:
1. 随机初始化k个聚类中心,通常是从数据集中随机选择k个样本作为聚类中心。
2. 对于每个数据点,计算其与k个聚类中心的距离,并将其归类到距离最近的聚类中心所代表的类别。
3. 对于每个聚类中心所代表的类别,重新计算其聚类中心位置,即取其所属数据点的均值作为新的聚类中心位置。
4. 重复步骤2和步骤3,直到聚类中心位置不再发生变化,或达到预设的最大迭代次数。
下面是一个简单的Python实现示例:
```python
import numpy as np
def kmeans(X, k, max_iters=100):
# 随机初始化k个聚类中心
centroids = X[np.random.choice(X.shape[0], k, replace=False), :]
for i in range(max_iters):
# 计算每个数据点到聚类中心的距离
distances = np.sqrt(((X - centroids[:, np.newaxis])**2).sum(axis=2))
# 归类到距离最近的聚类中心所代表的类别
labels = np.argmin(distances, axis=0)
# 重新计算每个聚类中心的位置
new_centroids = np.zeros((k, X.shape[1]))
for j in range(k):
new_centroids[j, :] = np.mean(X[labels == j, :], axis=0)
# 判断聚类中心位置是否发生变化
if np.allclose(centroids, new_centroids):
break
centroids = new_centroids
return labels, centroids
```
其中,X是一个n×m的矩阵,n为样本数,m为特征数;k为聚类数;max_iters为最大迭代次数。函数返回每个样本所属的类别和最终的聚类中心位置。