KMeans算法简介
KMeans算法的核心思想是将数据点分成预先指定数量的簇,使得簇内数据点的相似度最大化,而簇间数据点的相似度最小化。它的工作原理如下:
-
初始化:随机选择K个初始的聚类中心,其中K是用户指定的簇的数量。
-
分配数据点:将每个数据点分配给距离最近的聚类中心,形成K个簇。
-
更新聚类中心:计算每个簇中数据点的平均值,将这些平均值作为新的聚类中心。
-
重复迭代:重复步骤2和步骤3,直到聚类中心不再变化或达到预定的迭代次数。
-
收敛:算法在迭代过程中逐渐收敛,最终形成稳定的簇。
算法优缺点
优点:
- 简单且易于实现。
- 可用于聚类分析、图像分割等领域。
- 在数据集较大时也能表现出色。
缺点:
- 对初始簇中心的选择敏感,可能会导致陷入局部最优解。
- 不适用于非球形簇或者簇的大小差异较大的情况。
KMeans函数的参数
在使用KMeans函数时,您可以调整多个参数来控制算法的行为和结果。以下是一些常用的参数:
-
n_clusters:簇的数量,也就是您希望将数据分成多少个簇。这是KMeans算法中最重要的参数之一。
-
init:初始化方法,用于选择初始的聚类中心。常用的方法包括’k-means++‘(基于数据点分布的方法)和’random’(随机选择)。
-
max_iter:最大迭代次数,指定算法运行的最大迭代次数。
-
tol:收敛阈值,当聚类中心的变化小于该阈值时,算法将停止迭代。
-
random_state:随机种子,用于控制随机初始化,以便结果可以重复。
from sklearn.cluster import KMeans
import numpy as np
# 创建一些示例数据
data = np.array([[1, 2], [2, 3], [8, 7], [10, 9], [5, 6], [9, 8]])
# 初始化KMeans模型
kmeans = KMeans(n_clusters=2, init='k-means++', max_iter=100, random_state=42)
# 训练模型并得到预测结果
kmeans.fit(data)
labels = kmeans.labels_
# 输出每个数据点的所属簇
print("数据点所属簇:", labels)