实现k—means聚类算法代码
时间: 2024-02-06 16:01:26 浏览: 19
K-means聚类算法是一种常用的无监督学习算法,用于将数据集划分为K个不同的类别。实现K-means算法的代码通常包括以下几个步骤:
1. 初始化K个聚类中心点,可以随机选择数据集中的K个点作为初始中心点。
2. 对于每个数据点,计算它与K个聚类中心点的距离,并将该数据点分配给距离最近的中心点所对应的类别。
3. 更新K个聚类中心点的位置,将每个类别中的数据点的平均值作为新的聚类中心点。
4. 重复步骤2和步骤3,直到聚类中心点的位置不再发生变化或者达到预设的迭代次数。
以下是一个简单的用Python实现的K-means聚类算法代码示例:
```python
import numpy as np
from sklearn.datasets import make_blobs
# 生成随机数据集
X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)
# 初始化聚类中心点
k = 4
centers = X[:k, :]
# 迭代更新聚类中心点
for i in range(100):
# 计算每个数据点到聚类中心点的距离
distances = np.sqrt(np.sum((X - centers[:, np.newaxis])**2, axis=2))
# 将每个数据点分配给最近的聚类中心点
labels = np.argmin(distances, axis=0)
# 更新聚类中心点的位置
new_centers = np.array([X[labels == j].mean(axis=0) for j in range(k)])
# 如果聚类中心点的位置不再发生变化,停止迭代
if np.all(centers == new_centers):
break
centers = new_centers
print(centers)
```
上述代码中,我们首先生成了一个随机数据集X,然后初始化了4个聚类中心点。接下来,通过迭代计算每个数据点与聚类中心点的距离,将数据点分配给最近的中心点,并更新聚类中心点的位置,直到满足条件结束迭代。最终打印出了最终的聚类中心点的位置。