KMEANS算法的介绍
时间: 2023-12-14 07:35:06 浏览: 22
K-means算法是一种基于距离的聚类算法,它将数据集划分为K个簇,每个簇的中心点是簇中所有点的平均值。该算法的基本思想是:首先随机选取K个点作为簇的中心点,然后将数据集中的每个点分配到距离它最近的簇中,接着重新计算每个簇的中心点,再将数据集中的每个点分配到距离它最近的簇中,如此往复迭代,直到簇不再发生变化或达到预定的迭代次数为止。K-means算法的优点是简单、快速,适用于大规模数据集,但是需要预先指定簇的个数K,且对初始值敏感。
下面是K-means算法的Python实现代码:
```python
import numpy as np
def kmeans(data, k, max_iter=100):
# 随机初始化k个质心
centroids = data[np.random.choice(len(data), k, replace=False)]
for i in range(max_iter):
# 计算每个点到质心的距离
distances = np.sqrt(((data - centroids[:, np.newaxis])**2).sum(axis=2))
# 将每个点分配到距离最近的质心所在的簇中
labels = np.argmin(distances, axis=0)
# 更新每个簇的质心
for j in range(k):
centroids[j] = data[labels == j].mean(axis=0)
return labels, centroids
```
其中,data是一个二维数组,每行代表一个数据点;k是簇的个数;max_iter是最大迭代次数。函数返回一个元组,第一个元素是每个数据点所属的簇的标签,第二个元素是每个簇的中心点。