用python写一个聚类算法代码
时间: 2023-07-20 21:29:30 浏览: 46
下面是一个用Python实现k-means聚类算法的示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
def k_means(data, k):
# 随机初始化k个簇中心
centroids = data[np.random.choice(len(data), k, replace=False)]
# 初始化簇分配和簇距离数组
cluster_assign = np.zeros(len(data))
cluster_dist = np.zeros(len(data))
# 迭代计算簇中心和簇分配
for _ in range(100):
# 计算每个数据点到每个簇中心的距离
for i, x in enumerate(data):
dists = np.linalg.norm(x - centroids, axis=1)
cluster_assign[i] = np.argmin(dists)
cluster_dist[i] = np.min(dists)
# 计算每个簇的新中心
for j in range(k):
centroids[j] = np.mean(data[cluster_assign == j], axis=0)
return cluster_assign, cluster_dist, centroids
# 生成随机数据
data = np.random.rand(100, 2)
# 聚类并绘制结果
cluster_assign, _, centroids = k_means(data, 3)
plt.scatter(data[:,0], data[:,1], c=cluster_assign)
plt.scatter(centroids[:,0], centroids[:,1], marker='x', s=200, linewidths=3, color='r')
plt.show()
```
该代码使用numpy库实现了k-means聚类算法,并在二维平面上绘制了聚类结果和簇中心。