模式识别k-均值聚类
时间: 2023-12-01 15:04:50 浏览: 34
K-均值聚类是一种常见的模式识别算法,用于将数据集分成k个不同的组或类。该算法的基本思想是将数据集中的每个数据点分配到k个不同的组中,以使组内的数据点尽可能相似,而组间的数据点尽可能不同。以下是K-均值聚类的基本步骤:
1. 随机选择k个数据点作为初始聚类中心。
2. 将每个数据点分配到距离其最近的聚类中心所在的组中。
3. 对于每个组,计算其所有数据点的平均值,并将该平均值作为新的聚类中心。
4. 重复步骤2和3,直到聚类中心不再发生变化或达到预定的迭代次数。
下面是一个简单的Python实现K-均值聚类的例子:
```python
import numpy as np
def kmeans(X, k, max_iters=100):
# 随机初始化聚类中心
centroids = X[np.random.choice(len(X), 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.array([X[labels == j].mean(axis=0) for j in range(k)])
# 如果聚类中心不再发生变化,则退出循环
if np.all(centroids == new_centroids):
break
centroids = new_centroids
return labels, centroids
```