如何用python写一个等同于K-means效果的函数
时间: 2023-06-13 17:08:32 浏览: 89
详解K-means算法在Python中的实现
K-means是一种聚类算法,可以用来将数据点分成K个簇。下面是一个用Python实现K-means的函数:
```python
import numpy as np
def k_means(data, k, max_iters=100):
"""
K-means聚类算法
:param data: 数据集,每行表示一个样本
:param k: 聚类簇的个数
:param max_iters: 最大迭代次数
:return: 聚类结果和聚类中心
"""
# 随机初始化聚类中心
centers = data[np.random.choice(data.shape[0], k, replace=False)]
for i in range(max_iters):
# 计算每个样本到聚类中心的距离
distances = np.linalg.norm(data[:, np.newaxis, :] - centers, axis=-1)
# 确定每个样本属于哪个簇
labels = np.argmin(distances, axis=-1)
# 更新聚类中心
for j in range(k):
centers[j] = np.mean(data[labels == j], axis=0)
return labels, centers
```
这个函数接受一个数据集`data`,一个聚类簇的个数`k`,和一个最大迭代次数`max_iters`。它使用随机初始化的聚类中心,然后迭代计算每个样本到聚类中心的距离,并将每个样本归类到最近的聚类中心所在的簇中。接着更新聚类中心为簇内所有样本的平均值,重复这个过程直到达到最大迭代次数或收敛。最后返回聚类结果和聚类中心。
阅读全文