K-means算法的实例代码及解译
时间: 2024-04-24 13:03:54 浏览: 8
K-means算法是一种聚类算法,它将数据集分为k个不同的类别,每个类别都有一个代表中心点。该算法的目标是最小化数据点与其所属簇的中心点之间的距离平方和。
以下是一个使用Python实现K-means算法的示例代码,以及对代码的解释:
```python
import numpy as np
class KMeans:
def __init__(self, k=3, max_iter=100):
self.k = k
self.max_iter = max_iter
def fit(self, X):
n_samples, n_features = X.shape
# 1. 随机初始化k个中心点
centroids = np.random.randn(self.k, n_features)
for i in range(self.max_iter):
# 2. 计算每个数据点到每个中心点的距离
distances = np.sqrt(((X - centroids[:, np.newaxis])**2).sum(axis=2))
# 3. 找到每个数据点所属的簇
labels = np.argmin(distances, axis=0)
# 4. 更新中心点
for j in range(self.k):
centroids[j] = X[labels == j].mean(axis=0)
self.labels_ = labels
self.centroids_ = centroids
```
代码解释:
1. 初始化k个中心点:通过随机生成k个中心点来初始化。其中,k为用户指定的聚类数,n_features为数据集中每个样本的特征数量。
2. 计算每个数据点到每个中心点的距离:利用欧几里得距离公式计算每个数据点到每个中心点的距离。
3. 找到每个数据点所属的簇:根据距离计算结果,将每个数据点分配到距离最近的中心点所在的簇。
4. 更新中心点:对于每个簇,计算其中所有数据点的均值,将其作为该簇的新中心点。
最终,KMeans类的fit方法会返回聚类结果,包括每个数据点所属的簇和每个簇的中心点。