基于python实现Kmedian算法
时间: 2023-10-12 15:13:56 浏览: 39
以下是基于python实现Kmedian算法的示例代码:
```
import numpy as np
import random
def kmedian(X, k, max_iter=100):
# 初始化k个中心点
centers = random.sample(list(X), k)
for i in range(max_iter):
# 将每个样本点分配到最近的中心点
clusters = [[] for _ in range(k)]
for x in X:
distances = [np.linalg.norm(x-c) for c in centers]
cluster_idx = np.argmin(distances)
clusters[cluster_idx].append(x)
# 更新中心点为各自簇内点的中位数
new_centers = []
for i in range(k):
new_center = np.median(clusters[i], axis=0)
new_centers.append(new_center)
# 判断是否收敛
if np.allclose(centers, new_centers):
break
centers = new_centers
return centers, clusters
```
其中,X为样本点集合,k为聚类的簇数,max_iter为最大迭代次数。函数返回聚类的中心点和每个样本所属的簇。在函数内部,首先随机选择k个样本点作为初始中心点;然后进行迭代,每次将每个样本点分配到最近的中心点所在的簇中,计算每个簇内的点的中位数作为新的中心点;如果中心点没有改变或者达到最大迭代次数,则停止迭代。最终返回聚类的中心点和每个样本所属的簇。