k-means聚类算法范文
时间: 2024-05-03 15:15:48 浏览: 113
k-means聚类算法是一种常见的无监督学习算法,用于将一组数据分成K个不同的类别。该算法的目标是最小化每个数据点与所属类别中心点之间的距离平方和。下面是k-means聚类算法的步骤:
1. 从数据集中随机选择K个数据点作为聚类中心点。
2. 将每个数据点分配到距其最近的聚类中心点所在的类别中。
3. 计算每个类别中所有数据点的平均值,并将其作为该类别的新聚类中心点。
4. 重复第2和第3步,直到聚类中心点不再发生变化或达到预定迭代次数。
以下是k-means聚类算法的范例代码:
```python
import numpy as np
def k_means(data, k, max_iterations=100):
# 随机选择K个数据点作为聚类中心点
centers = data[np.random.choice(len(data), k, replace=False)]
for i in range(max_iterations):
# 分配每个数据点到最近的聚类中心点所在的类别中
labels = np.argmin(((data - centers[:, np.newaxis])**2).sum(axis=2), axis=0)
# 计算每个类别中所有数据点的平均值,并将其作为该类别的新聚类中心点
new_centers = np.array([data[labels == j].mean(axis=0) for j in range(k)])
# 如果新聚类中心点和旧聚类中心点相同,则退出循环
if np.allclose(new_centers, centers):
break
centers = new_centers
return labels, centers
```
阅读全文