用实际案例解释k-均值算法,并给出python代码。
时间: 2024-05-07 07:23:50 浏览: 62
k-均值算法的具体实现
5星 · 资源好评率100%
K-均值算法是一种无监督学习算法,它将相似的数据点聚类在一起。
一个简单的例子是将一组顾客按照他们的年龄和收入分成不同的群组。我们可以使用K-均值算法来实现这个任务。
Python代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成数据集
np.random.seed(42)
X = np.random.randn(100, 2)
# 初始化聚类中心
k = 3
centroids = X[:k]
# 计算每个数据点距离聚类中心的距离,并将其分配给最近的聚类中心
def assign_clusters(X, centroids):
distances = np.sqrt(((X - centroids[:, np.newaxis])**2).sum(axis=2))
return np.argmin(distances, axis=0)
# 计算每个聚类的平均值,并将其更新为新的聚类中心
def update_centroids(X, clusters):
return np.array([X[clusters == i].mean(axis=0) for i in range(k)])
# 迭代聚类过程直到收敛
for i in range(10):
clusters = assign_clusters(X, centroids)
centroids = update_centroids(X, clusters)
# 绘制聚类结果
plt.scatter(X[:, 0], X[:, 1], c=clusters)
plt.scatter(centroids[:, 0], centroids[:, 1], marker='x', color='r')
plt.show()
```
该代码首先生成一个随机的二维数据集。然后,使用前三个数据点作为聚类中心,并通过计算每个数据点与聚类中心的距离来将其分配给最近的聚类中心。然后,计算每个聚类的平均值,并将其更新为新的聚类中心。最后,重复上述过程,直到收敛为止。最终的结果是一个带有聚类中心的散点图,其中不同的颜色表示不同的聚类。
阅读全文