写一个kmeans分类代码
时间: 2024-03-25 07:38:23 浏览: 50
人工智能-项目实践-图像聚类-使用SIFT算法提取图像特征,再使用KMeans聚类算法进行图像分类
5星 · 资源好评率100%
好的,以下是一个简单的Python实现KMeans聚类的代码:
```python
import numpy as np
class KMeans:
def __init__(self, k=5, max_iter=100):
self.k = k
self.max_iter = max_iter
def fit(self, X):
self.centroids = []
# 初始化聚类中心
for i in range(self.k):
self.centroids.append(X[np.random.randint(0, len(X)-1)])
for i in range(self.max_iter):
# 分配每个数据点到最近的聚类中心
clusters = {}
for j in range(self.k):
clusters[j] = []
for point in X:
distances = [np.linalg.norm(point - centroid) for centroid in self.centroids]
cluster_id = distances.index(min(distances))
clusters[cluster_id].append(point)
# 更新聚类中心
prev_centroids = self.centroids
for cluster_id in clusters:
self.centroids[cluster_id] = np.mean(clusters[cluster_id], axis=0)
# 如果聚类中心没有移动,则停止迭代
if np.array_equal(prev_centroids, self.centroids):
break
def predict(self, X):
predictions = []
for point in X:
distances = [np.linalg.norm(point - centroid) for centroid in self.centroids]
cluster_id = distances.index(min(distances))
predictions.append(cluster_id)
return predictions
```
这个KMeans类包含两个方法:fit和predict。fit方法用于训练模型,而predict方法用于预测新数据点的类别。这个实现使用欧氏距离作为距离度量。
阅读全文