kmeans聚类算法python程序
时间: 2023-08-29 14:10:39 浏览: 71
python实现kmeans聚类算法
5星 · 资源好评率100%
下面是一个简单的K-Means聚类算法的Python实现:
```python
import numpy as np
import matplotlib.pyplot as plt
def kmeans(X, K, max_iters=100):
"""
K-Means聚类算法
:param X: 样本矩阵,每一行代表一个样本
:param K: 聚类数
:param max_iters: 最大迭代次数
:return: 聚类结果
"""
m, n = X.shape
# 随机初始化聚类中心
centroids = X[np.random.choice(m, K, replace=False), :]
idx = np.zeros(m)
for i in range(max_iters):
# 计算每个样本到聚类中心的距离
for j in range(m):
distances = np.linalg.norm(X[j] - centroids, axis=1)
idx[j] = np.argmin(distances)
# 更新聚类中心
for k in range(K):
centroids[k] = np.mean(X[idx == k], axis=0)
return idx
# 生成随机数据
X = np.random.rand(100, 2)
# 聚类
idx = kmeans(X, 3)
# 绘制聚类结果
colors = ['r', 'g', 'b']
for k in range(3):
plt.scatter(X[idx == k, 0], X[idx == k, 1], c=colors[k])
plt.show()
```
其中,`X`为样本矩阵,每一行代表一个样本;`K`为聚类数;`max_iters`为最大迭代次数。函数返回一个长度为`m`的数组`idx`,代表每个样本所属的聚类。在上述代码中,我们生成了一个随机的二维数据集,并使用K-Means聚类算法将其分为3类,最后绘制了聚类结果。
阅读全文