给学生分组,高水平:中水平:低水平 = 1:2:2,我想知道k-means聚类算法的具体代码
时间: 2024-05-12 13:16:21 浏览: 80
以下是使用Python编写的k-means聚类算法的代码:
```python
import numpy as np
# 随机生成样本数据
X = np.random.randn(100, 2)
# 定义k-means聚类函数
def kmeans(X, k=3, tol=0.0001, max_iter=100):
# 随机选择k个中心点
centers = X[np.random.choice(X.shape[0], k, replace=False), :]
# 迭代聚类过程,最多迭代max_iter次或误差小于tol
for i in range(max_iter):
# 计算每个样本点与k个中心点的距离
distances = np.sqrt(((X - centers[:, np.newaxis])**2).sum(axis=2))
# 找到距离每个中心点最近的样本
labels = distances.argmin(axis=0)
# 计算每个聚类的平均值作为新的中心点
new_centers = np.array([X[labels == j, :].mean(axis=0) for j in range(k)])
# 计算中心点的移动距离作为误差
diff = np.abs(new_centers - centers)
error = diff.max()
# 更新中心点
centers = new_centers
# 如果误差小于tol,停止迭代
if error < tol:
break
# 返回聚类结果和中心点
return labels, centers
# 调用k-means聚类函数
labels, centers = kmeans(X, k=3)
# 输出聚类结果和中心点
print('聚类结果:', labels)
print('中心点:', centers)
```
请注意,以上代码仅用于演示,真正的应用中需要根据具体情况进行修改和优化。
阅读全文