编写一个Python函数,实现K-means算法,对给定的数据集进行聚类
时间: 2024-09-10 19:21:43 浏览: 59
K-means算法是一种常用的聚类分析方法,其目的是将n个数据点划分为k个簇,使得每个点都属于离它最近的簇中心(即该簇中所有点的均值)。下面是一个简单实现K-means算法的Python函数示例:
```python
import numpy as np
def k_means(data, k, max_iters=100):
# 初始化随机的k个簇中心
centroids = data[np.random.choice(data.shape[0], k, replace=False)]
for _ in range(max_iters):
# 计算每个点到各个簇中心的距离,并分配给最近的簇
distances = np.sqrt(((data - centroids[:, np.newaxis])**2).sum(axis=2))
points_labels = np.argmin(distances, axis=0)
# 计算新的簇中心
new_centroids = np.array([data[points_labels == i].mean(axis=0) for i in range(k)])
# 检查簇中心是否变化,如果不再变化则停止迭代
if np.all(centroids == new_centroids):
break
centroids = new_centroids
return points_labels
# 使用示例
# 假设有一个数据集data,我们想要将其聚类为3个簇
# data = np.array([[1.0, 2.0], [1.5, 1.8], [5.0, 8.0], [8.0, 8.0], [1.0, 0.6], [9.0, 11.0]])
# cluster_labels = k_means(data, k=3)
# print(cluster_labels)
```
在使用这段代码之前,请确保你的数据集是以NumPy数组的形式准备好,并且已经导入了NumPy库。
阅读全文