python代码实现k-means算法
时间: 2023-06-01 20:05:51 浏览: 98
好的,我可以回答这个问题。K-means算法是一种无监督的机器学习算法,用于将数据集分成K个簇。下面是一个Python实现示例:
```
import numpy as np
class KMeans:
def __init__(self, k=3, max_iterations=500):
self.k = k
self.max_iterations = max_iterations
def fit(self, data):
self.centroids = {}
# Initialize centroids randomly
for i in range(self.k):
self.centroids[i] = data[np.random.randint(0, len(data))]
for i in range(self.max_iterations):
self.classes = {}
for j in range(self.k):
self.classes[j] = []
# Assign each point to the closest centroid
for point in data:
distances = [np.linalg.norm(point - self.centroids[c]) for c in self.centroids]
classification = distances.index(min(distances))
self.classes[classification].append(point)
# Update centroids
for c in self.classes:
self.centroids[c] = np.average(self.classes[c], axis=0)
def predict(self, data):
distances = [np.linalg.norm(data - self.centroids[c]) for c in self.centroids]
classification = distances.index(min(distances))
return classification
```
上述代码中,我们首先初始化K个随机质心,然后将数据分配到最近的质心中,并且使用每个簇的平均值更新质心,重复上述步骤直到收敛或达到最大迭代次数。 `predict`方法用于对新数据进行分类。