用Python实现k-means算法原理
时间: 2023-11-05 15:30:52 浏览: 82
python实现的k-means算法
5星 · 资源好评率100%
K-means算法是一种聚类算法,其基本思想是将n个数据对象分成k个簇,使得簇内具有较高的相似度,而簇间的相似度较低。
下面是用Python实现K-means算法的基本步骤:
1. 随机选择k个数据点作为初始质心;
2. 对每个数据点计算其与k个质心的距离,将其划分到与之最近的簇中;
3. 对每个簇重新计算其质心;
4. 重复步骤2-3,直到簇不再发生变化或达到最大迭代次数。
代码实现如下:
```python
import numpy as np
import random
def kmeans(data, k, max_iterations=100):
# 随机初始化k个质心
centroids = random.sample(list(data), k)
for i in range(max_iterations):
# 初始化簇
clusters = [[] for _ in range(k)]
# 将数据划分到最近的簇中
for point in data:
distances = [np.linalg.norm(point - centroid) for centroid in centroids]
cluster_index = np.argmin(distances)
clusters[cluster_index].append(point)
# 更新质心
for j in range(k):
centroids[j] = np.mean(clusters[j], axis=0)
# 判断簇是否发生变化
if i > 0 and all(np.array_equal(clusters[j], old_clusters[j]) for j in range(k)):
break
old_clusters = clusters
return clusters, centroids
```
其中,data是一个n维的numpy数组,k是簇的个数,max_iterations是最大迭代次数。返回值为一个包含簇和质心的元组。
阅读全文