你要扮演一个python程序员,编写K均值聚类。给我写个例子
时间: 2024-04-15 11:28:48 浏览: 104
当然,我可以帮你编写一个简单的 K-means 聚类算法的例子。以下是一个使用 Python 编写的 K-means 聚类算法示例:
```python
import numpy as np
def kmeans(X, k, max_iters=100):
# 随机初始化 k 个聚类中心
centroids = X[np.random.choice(range(len(X)), k, replace=False)]
for _ in range(max_iters):
# 分配样本到最近的聚类中心
labels = np.argmin(np.linalg.norm(X[:, None] - centroids, axis=-1), axis=-1)
# 更新聚类中心为各个聚类的均值
new_centroids = np.array([X[labels == i].mean(axis=0) for i in range(k)])
# 若聚类中心不再变化,算法收敛
if np.all(centroids == new_centroids):
break
centroids = new_centroids
return labels, centroids
# 生成随机数据
np.random.seed(42)
X = np.random.rand(100, 2)
# 调用 K-means 算法
k = 3
labels, centroids = kmeans(X, k)
# 打印聚类结果和聚类中心
print("聚类结果:", labels)
print("聚类中心:", centroids)
```
在这个例子中,我们首先定义了一个 `kmeans` 函数,它接受输入数据 `X`、聚类数 `k` 和最大迭代次数 `max_iters`。函数首先随机初始化 `k` 个聚类中心,然后进行迭代优化,直到聚类中心不再变化或达到最大迭代次数。
在主程序中,我们生成了一个随机的二维数据集 `X`,然后使用 `kmeans` 函数进行聚类。最后,我们打印出聚类结果和聚类中心。
希望这个例子能帮到你!如果还有其他问题,请随时提问。
阅读全文