用python写一个k-means聚类处理多维数据的算法
时间: 2023-05-16 08:05:29 浏览: 223
好的,以下是一个用 Python 实现的 k-means 聚类算法处理多维数据的示例代码:
```python
import numpy as np
def k_means(data, k, max_iter=100):
# 随机初始化 k 个聚类中心
centers = data[np.random.choice(len(data), k, replace=False)]
for i in range(max_iter):
# 计算每个样本到聚类中心的距离
distances = np.linalg.norm(data[:, np.newaxis, :] - centers, axis=2)
# 找到每个样本距离最近的聚类中心
labels = np.argmin(distances, axis=1)
# 更新聚类中心
new_centers = np.array([data[labels == j].mean(axis=0) for j in range(k)])
# 如果聚类中心不再变化,停止迭代
if np.allclose(centers, new_centers):
break
centers = new_centers
return labels, centers
```
这个函数接受一个二维的 numpy 数组 `data`,其中每一行表示一个样本,每一列表示一个特征。`k` 表示聚类的个数,`max_iter` 表示最大迭代次数。函数返回一个一维的 numpy 数组 `labels`,表示每个样本所属的聚类编号,以及一个二维的 numpy 数组 `centers`,表示每个聚类的中心点。
阅读全文