python不使用库实现kmeans聚类算法
时间: 2023-10-09 19:05:34 浏览: 209
K-Means聚类算法是一种基于划分的聚类算法,可以将数据分成K个不同的簇。以下是一个不使用库实现K-Means聚类算法的Python示例代码:
```python
import numpy as np
# 生成数据
data = np.random.rand(100, 2)
# 超参数
k = 3
max_iter = 100
# 随机初始化聚类中心
centers = np.random.rand(k, 2)
# 迭代更新聚类中心
for i in range(max_iter):
# 计算每个数据点到各个聚类中心的距离
distances = np.zeros((data.shape[0], k))
for j in range(k):
distances[:, j] = np.linalg.norm(data - centers[j], axis=1)
# 分配每个数据点到距离最近的聚类中心所在的簇
labels = np.argmin(distances, axis=1)
# 更新聚类中心
for j in range(k):
centers[j] = np.mean(data[labels == j], axis=0)
# 输出最终的聚类结果
print(labels)
```
上述代码中,我们首先生成100个随机数据点,然后随机初始化3个聚类中心。接着,我们迭代地计算每个数据点到各个聚类中心的距离,并将每个数据点分配到距离最近的聚类中心所在的簇中。最后,我们更新聚类中心并输出最终的聚类结果。
需要注意的是,上述代码实现的K-Means聚类算法并不是最优的,可能会受到初始聚类中心的影响,容易陷入局部最优解。在实际应用中,通常采用多次运行K-Means聚类算法并选择最优的聚类结果。
阅读全文