利用python举实例实现kmeans聚类算法
时间: 2023-10-22 17:09:24 浏览: 105
Python实现的KMeans聚类算法实例分析
5星 · 资源好评率100%
以下是一个简单的Python实现K-means聚类算法的示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 初始化数据点
X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]])
# 定义K-means算法
def kmeans(X, K):
# 随机选择K个中心点
centers = X[np.random.choice(range(len(X)), K, replace=False)]
while True:
# 分配每个数据点到最近的中心点
labels = np.array([np.argmin(np.sqrt(np.sum((X - center)**2, axis=1))) for center in centers])
# 计算每个簇的平均值并更新中心点
new_centers = np.array([X[labels == i].mean(axis = 0) for i in range(K)])
# 如果中心点不再变化,则算法收敛
if np.all(centers == new_centers):
break
centers = new_centers
return centers, labels
# 调用K-means算法
centers, labels = kmeans(X, 2)
# 绘制数据点和中心点
plt.scatter(X[:,0], X[:,1], c=labels)
plt.scatter(centers[:,0], centers[:,1], marker='*', s=300, c='r')
plt.show()
```
在此示例中,我们首先初始化了一个包含六个数据点的数组X,然后定义了一个名为kmeans的函数,该函数接受X和K(簇的数量)作为参数。
在函数中,我们首先随机选择K个中心点,然后在while循环中执行以下操作:
1. 将每个数据点分配到最近的中心点(即,将每个数据点分配到最近的簇)。
2. 计算每个簇的平均值并更新中心点。
3. 如果中心点不再变化,则算法收敛并退出循环。
最后,我们调用kmeans函数并将其结果传递给scatter函数以绘制数据点和中心点。在此示例中,我们将数据点用不同颜色的圆圈表示,将中心点用红色星号表示。
阅读全文