k均值聚类算法python
时间: 2023-07-08 21:45:54 浏览: 132
下面是使用Python实现k均值聚类算法的示例代码:
```
# 导入所需的库
import numpy as np
import matplotlib.pyplot as plt
# 定义k均值聚类函数
def k_means(data, k, max_iter=300):
# 随机初始化k个聚类中心
centers = np.array(data[np.random.choice(len(data), k, replace=False)])
for i in range(max_iter):
# 计算每个数据点到聚类中心的距离
distances = np.linalg.norm(data[:, np.newaxis] - centers, axis=2)
# 确定每个数据点所属的簇
labels = np.argmin(distances, axis=1)
# 更新聚类中心
new_centers = np.array([data[labels == j].mean(axis=0) for j in range(k)])
# 如果聚类中心不再发生变化,则退出迭代
if np.allclose(new_centers, centers):
break
centers = new_centers
return labels, centers
# 生成随机数据
np.random.seed(0)
data = np.vstack([np.random.randn(100, 2) + i * 5 for i in range(3)])
# 调用k均值聚类函数
labels, centers = k_means(data, k=3)
# 绘制聚类结果
plt.scatter(data[:, 0], data[:, 1], c=labels, cmap='viridis')
plt.scatter(centers[:, 0], centers[:, 1], c='black', s=200, alpha=0.5);
```
该代码首先定义了一个k_means()函数来实现k均值聚类算法,然后生成了一些随机数据,并调用该函数进行聚类。最后使用matplotlib库绘制了聚类结果。
阅读全文
相关推荐















