class K_Means(object):
时间: 2024-10-10 08:06:15 浏览: 21
K-Means 是一种常见的聚类算法。它是用于数据聚类的流行方法之一。它的工作原理是尝试将输入数据分组为具有某种形状或特性的几个集群或聚类。这些聚类通过最大化对象到聚类中心的距离的平方和来找到。
在 Python 中,K-Means 通常使用 sklearn 库实现。下面是一个简单的 K-Means 类的示例,它定义在名为 K_Means 的类中:
```python
class K_Means(object):
def __init__(self, k, max_iters=100, random_state=None):
self.k = k
self.max_iters = max_iters
self.random_state = random_state
def fit(self, X):
# 这里假设 X 是一个二维数组,其中每一行代表一个数据点,每一列代表一个特征
# 初始化聚类中心
centroids = X[np.random.choice(range(X.shape[0]), size=self.k, replace=False)]
for _ in range(self.max_iters):
# 计算每个数据点到每个聚类中心的距离,并分配到最近的聚类中心
clusters = np.argmin(np.sqrt(((X - centroids[:, np.newaxis])**2).sum(axis=2)), axis=0)
# 根据新分配的聚类,重新计算每个聚类的中心
new_centroids = np.array([X[clusters==i].mean(axis=0) for i in range(self.k)])
# 如果聚类中心没有改变,则算法收敛,停止迭代
if np.all(centroids == new_centroids):
break
centroids = new_centroids
return self, centroids
def predict(self, X):
return np.argmin(np.sqrt(((X - self.centroids[:, np.newaxis])**2).sum(axis=2)), axis=0)
```
这个类包含两个主要方法:`fit` 和 `predict`。`fit` 方法用于训练模型,而 `predict` 方法用于对新数据进行预测。在 `fit` 方法中,首先初始化聚类中心为随机选择的点,然后在循环中不断更新每个数据点的聚类,并重新计算每个聚类的中心,直到达到最大迭代次数或聚类中心不再变化为止。在 `predict` 方法中,对新数据点进行预测,将其分配到最近的聚类中心。
请注意,这只是一个简单的示例,实际的 K-Means 实现可能会更复杂,并可能包括其他功能,如处理空聚类、处理异常值等。
阅读全文