数据挖掘kmeans聚类算法数据集求质心代码
时间: 2024-05-20 10:08:52 浏览: 142
K-means聚类算法是一种常见的无监督学习算法,用于将数据集分成K个不同的簇。K-means算法的主要目标是最小化所有数据点与它们所属簇的质心之间的平方距离和。以下是一个简单的K-means聚类算法的代码示例,用于计算数据集的质心:
```python
import numpy as np
def kmeans(data, k, max_iter=100):
# 随机初始化质心
centroids = data[np.random.choice(data.shape, k, replace=False)]
for i in range(max_iter):
# 计算每个数据点到质心的距离
distances = np.linalg.norm(data[:, np.newaxis, :] - centroids, axis=2)
# 确定每个数据点所属的簇
labels = np.argmin(distances, axis=1)
# 计算新的质心
new_centroids = np.array([data[labels == j].mean(axis=0) for j in range(k)])
# 如果质心不再改变,则停止迭代
if np.all(centroids == new_centroids):
break
centroids = new_centroids
return centroids
```
此代码接受一个数据集 `data`,簇数量 `k` 和最大迭代次数 `max_iter` 作为输入,返回数据集的质心。在该函数中,我们首先随机初始化 `k` 个质心。然后,我们通过计算每个数据点到质心的距离来确定每个数据点所属的簇。接下来,我们计算新的质心,并检查是否达到收敛条件(即质心不再改变)。如果达到收敛条件,则停止迭代并返回质心。
阅读全文