📅  最后修改于: 2023-12-03 14:54:55.276000             🧑  作者: Mango
K-Mean方法是一种常见的聚类方法,用于将数据集划分为k个不同的组或簇。它将每个数据点分配到最接近的聚类中心,并尝试最小化每个聚类中数据点与其聚类中心之间的距离。
选择$k$个点作为聚类中心,可以随机选择。
对于数据集中的每个数据点,计算其与每个聚类中心的距离,并将其分配给最近的聚类中心。
对于每个聚类,重新计算其聚类中心。
重复2和3步,直到聚类中心的变化很小或指定的迭代次数达到。
下面的Python代码展示了如何使用K-Mean方法来聚类数据集:
import numpy as np
import matplotlib.pyplot as plt
# 生成测试数据集
data = np.random.rand(200, 2)
# 初始化聚类中心
k = 3
centers = data[np.random.choice(len(data), size=k, replace=False), :]
# 迭代计算
max_iter = 10
for i in range(max_iter):
# 计算距离矩阵
distances = np.sqrt(((data - centers[:, np.newaxis])**2).sum(axis=2))
# 分配聚类
labels = np.argmin(distances, axis=0)
# 更新聚类中心
for j in range(k):
centers[j] = data[labels == j].mean(axis=0)
# 可视化结果
colors = ['r', 'g', 'b']
for i in range(k):
plt.scatter(data[labels == i, 0], data[labels == i, 1], c=colors[i])
plt.scatter(centers[:, 0], centers[:, 1], marker='x', s=200, linewidths=3, color='k')
plt.title('K-Mean Clustering')
plt.show()
代码解释:
首先,我们生成一个包含200个数据点的测试数据集。
然后,我们随机初始化$k=3$个聚类中心。
在迭代的每个步骤中,我们根据每个数据点与聚类中心之间的距离,将数据点分配给最近的聚类中心。
然后,我们更新每个聚类中心,以使其成为聚类中的所有数据点的平均值。
最后,我们使用Matplotlib库将聚类结果可视化。
K-Mean方法是一种常见的聚类方法,它可以用于将数据集划分为k个不同的组或簇。它将每个数据点分配到其最近的聚类中心,并尝试最小化每个聚类中数据点与其聚类中心之间的距离。K-Mean方法易于理解和实现,并且在许多数据挖掘任务中得到广泛应用。