python编写k-均值优化算法
时间: 2023-07-17 07:10:52 浏览: 99
k-均值优化算法是一种常用的无监督学习算法,用于将一组数据点划分为k个不同的类别。下面是一个使用Python编写k-均值优化算法的示例代码:
```python
import numpy as np
def k_means(X, k, max_iters=100):
# 随机选择k个中心点
centers = X[np.random.choice(range(len(X)), k, replace=False)]
for _ in range(max_iters):
# 计算每个数据点到各个中心点的距离
distances = np.linalg.norm(X[:, np.newaxis] - centers, axis=-1)
# 将数据点划分到距离最近的中心点所对应的类别
labels = np.argmin(distances, axis=-1)
# 更新中心点的位置
new_centers = np.array([X[labels == i].mean(axis=0) for i in range(k)])
# 如果中心点不再变化,停止迭代
if np.all(centers == new_centers):
break
centers = new_centers
return labels, centers
```
在上述代码中,我们首先随机选择k个中心点,然后进行迭代优化,直到中心点不再变化或达到最大迭代次数。在每次迭代中,我们计算每个数据点到各个中心点的距离,并将数据点划分到距离最近的中心点所对应的类别。然后,我们更新中心点的位置为每个类别中数据点的平均值。最终,返回每个数据点所属的类别和最终的中心点位置。
你可以使用该代码来应用k-均值优化算法,并根据实际需求进行调整和扩展。
阅读全文
相关推荐



















