用python写k-means聚类算法函数
时间: 2023-11-30 10:02:41 浏览: 152
以下是Python实现的k-means聚类算法函数:
```
import numpy as np
def kmeans(X, K, max_iters=100):
"""
K-means聚类算法函数
参数:
X: ndarray, shape (n_samples, n_features)
待聚类的数据集,每行表示一个样本,每列表示一个特征
K: int
聚类簇的个数
max_iters: int, optional (default=100)
最大迭代次数
返回:
centroids: ndarray, shape (K, n_features)
聚类簇的中心点
labels: ndarray, shape (n_samples,)
每个样本所属的聚类簇标签
"""
n_samples, n_features = X.shape
# 随机初始化聚类簇的中心点
centroids = X[np.random.choice(n_samples, K, replace=False), :]
# 迭代更新聚类簇的中心点
for i in range(max_iters):
# 计算每个样本到聚类簇中心点的距离
distances = np.sqrt(((X - centroids[:, np.newaxis])**2).sum(axis=2))
# 根据距离将每个样本分配到最近的聚类簇
labels = distances.argmin(axis=0)
# 更新聚类簇的中心点
for k in range(K):
centroids[k] = X[labels == k].mean(axis=0)
return centroids, labels
```
该函数先随机初始化聚类簇的中心点,然后迭代更新聚类簇的中心点,直到收敛或达到最大迭代次数。在每次迭代中,该函数计算每个样本到聚类簇中心点的距离,然后根据距离将每个样本分配到最近的聚类簇,最后更新聚类簇的中心点。最终返回聚类簇的中心点和每个样本所属的聚类簇标签。
阅读全文