给出k-means聚类方法的python代码
时间: 2023-10-12 18:17:11 浏览: 75
K-means 聚类算法 python 代码实现
下面是一个简单的实现 k-means 聚类方法的 Python 代码:
```python
import numpy as np
def k_means(X, k, max_iter=100):
# 随机初始化聚类中心
centers = X[np.random.choice(len(X), k, replace=False)]
for i in range(max_iter):
# 计算每个样本点到聚类中心的距离
distances = np.sqrt(((X - centers[:, np.newaxis])**2).sum(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.allclose(centers, new_centers):
break
centers = new_centers
return labels, centers
```
在这个实现中,我们首先随机初始化 k 个聚类中心,然后迭代地进行以下步骤直到收敛:
1. 计算每个样本点到每个聚类中心的距离
2. 将每个样本点分配到距离最近的聚类中心的类别中
3. 更新每个聚类中心为所属类别中所有样本点的平均值
最后返回每个样本点所属的类别和最终的聚类中心。
这个代码实现非常简单,但是在实际应用中可能需要进行更多的优化和调整,比如对初始聚类中心的选择、对距离计算方法的调整、对收敛判断的条件的调整等等。
阅读全文