kmeans算法代码处理四维数据
时间: 2023-09-10 09:04:41 浏览: 61
下面是使用Python实现kmeans算法处理四维数据的示例代码:
```python
import numpy as np
import random
def kmeans(data, k, max_iter=100):
# 随机初始化k个中心点
centers = random.sample(list(data), k)
for i in range(max_iter):
# 分配每个数据点到最近的中心点
clusters = [[] for _ in range(k)]
for point in data:
distances = [np.linalg.norm(point - center) for center in centers]
nearest_center_index = np.argmin(distances)
clusters[nearest_center_index].append(point)
# 更新中心点
new_centers = []
for cluster in clusters:
if len(cluster) == 0:
# 如果某个簇为空,则随机选择一个数据点作为新的中心点
new_center = random.choice(list(data))
else:
new_center = np.mean(cluster, axis=0)
new_centers.append(new_center)
# 如果中心点的位置不再改变,则退出循环
if np.allclose(centers, new_centers):
break
centers = new_centers
# 返回聚类结果和中心点
return clusters, centers
```
其中,`data`是一个`n×4`的numpy数组,表示有`n`个四维数据点;`k`是需要聚类的簇的个数;`max_iter`是最大迭代次数。函数返回值是一个元组,第一个元素是一个长度为`k`的列表,每个元素是一个列表,表示对应的簇中包含的数据点;第二个元素是一个长度为`k`的列表,表示每个簇的中心点。