用kmeans算法编写一段代码
时间: 2024-05-05 17:20:48 浏览: 90
kmeans算法源码
3星 · 编辑精心推荐
好的,以下是使用Python编写的基本k-means算法:
```python
import numpy as np
import random
# 定义k-means算法函数
def kmeans(data, k, max_iter=300):
# 随机初始化k个中心点
centroids = random.sample(list(data), k)
# 迭代算法
for i in range(max_iter):
# 初始化聚类结果
clusters = [[] for _ in range(k)]
# 遍历数据集,将每个点归类到最近的中心点
for point in data:
distances = [np.linalg.norm(point - c) for c in centroids]
cluster_idx = np.argmin(distances)
clusters[cluster_idx].append(point)
# 更新中心点
for j in range(k):
centroids[j] = np.mean(clusters[j], axis=0)
# 返回聚类结果和中心点
return clusters, centroids
```
该函数的输入参数为数据集(data)、聚类数目(k)、最大迭代次数(max_iter)。该算法首先随机初始化k个中心点,然后进行迭代算法,每次遍历数据集,将每个点归类到最近的中心点,然后更新中心点。最后返回聚类结果和中心点。
注意:该算法只适用于欧氏空间,如果使用其他距离度量,需要修改计算距离的代码。
阅读全文