如何用python实现kmeans
时间: 2024-05-10 16:20:24 浏览: 50
以下是Python中K-Means聚类算法的实现示例:
```python
import numpy as np
import matplotlib.pyplot as plt
def kmeans(X, K, max_iters):
# 随机初始化K个聚类中心
centroids = X[np.random.choice(range(len(X)), K), :]
# 迭代
for i in range(max_iters):
# 计算每个样本到聚类中心的距离
distances = np.sqrt(((X - centroids[:, np.newaxis])**2).sum(axis=2))
# 分配每个样本到最近的聚类中心
cluster_assignment = np.argmin(distances, axis=0)
# 更新聚类中心
for j in range(K):
centroids[j, :] = np.mean(X[cluster_assignment == j, :], axis=0)
return centroids, cluster_assignment
# 生成数据
np.random.seed(0)
X = np.vstack([np.random.randn(10, 2) + [i * 5, i * 5] for i in range(5)])
# 调用K-Means算法
centroids, cluster_assignment = kmeans(X, K=5, max_iters=100)
# 可视化结果
plt.scatter(X[:, 0], X[:, 1], c=cluster_assignment)
plt.scatter(centroids[:, 0], centroids[:, 1], marker='^', s=200, linewidths=3, color='r')
plt.show()
```
此代码使用Numpy和Matplotlib库实现了一个简单的K-Means聚类算法。给定数据集X,K和最大迭代次数,它将随机初始化K个聚类中心,并在每个迭代中计算每个样本到聚类中心的距离,将每个样本分配到最近的聚类中心,并更新聚类中心。最终,它返回聚类中心和每个样本分配到的聚类。聚类结果可视化在散点图中。
阅读全文