了解 K-均值聚类,这是一种用于将数据分组到聚类中的关键无监督学习算法。 探索它的过程、应用和比较!
K-Means 聚类是无监督学习领域广泛使用的一种算法。 无监督学习领域广泛使用的算法。 将数据集划分为不同的、不重叠的子群。在更广泛的 在机器学习(ML)的大背景下,这种方法对于发现数据集中隐藏的模式和结构至关重要。 在机器学习(ML)的大背景下,这种方法对于发现未标记数据中的隐藏模式和结构至关重要。该算法通过将数据点 K$ 个群组,其中每个点都属于平均值最近的群组,作为群组的原型。 组的原型。这种方法有助于最大限度地减少每个簇内的方差,确保同一簇内的数据点尽可能相似,同时又能保持簇内数据的一致性。 尽可能相似,同时保持不同组之间的区别。
K-Means 的过程是迭代的,首先要选择 $K$ 初始中心点,作为簇的中心点。 作为聚类的中心点。这些中心点可以随机选择,也可以通过更智能的初始化技术选择,如 K-means++ 初始化 来提高收敛速度。然后,该算法会经过两个主要步骤,直到结果趋于稳定:
如此循环往复,直到中心点不再明显移动,表明算法已经收敛。 确定聚类的最佳数目是这一过程的关键部分,通常使用的技术包括 肘法 或通过分析 剪影得分 来测量结果聚类之间的分离距离。
K-Means 聚类技术用途广泛,适用于各行各业的数据挖掘和分析任务。 数据挖掘和分析任务。
而现代物体探测器,如 Ultralytics YOLO11通常 虽然现代物体检测器(如 Ultralytics YOLO11)通常采用先进的回归技术或无锚头技术,但 K-Means(K-Means)在检测模型的发展过程中起到了关键作用。 检测模型的演变中发挥了关键作用。早期的迭代,如 YOLOv2 到YOLOv5,使用 K-Means 聚类对 COCO 数据集的边界框 数据集的边界框维度进行 K-Means聚类,以确定最佳的 锚点框。这些预先计算的锚点 为模型预测物体形状提供了更好的先验,从而显著提高了训练的稳定性和召回率。
K-Means 与 K-Nearest Neighbors (KNN)混为一谈,但二者的目的根本不同。 但二者的目的根本不同。
另一个相关概念是 DBSCAN 基于密度而不是中心点的距离进行聚类。与 K-Means 不同的是,DBSCAN 不需要事先指定聚类的数量,而且能更好地处理异常值。 事先指定聚类的数量,而且更善于处理异常值。
下面的Python 示例演示了如何使用 K-Means 对像素颜色进行聚类,这是视觉任务中一个常见的 数据预处理步骤。
import numpy as np
from sklearn.cluster import KMeans
# Simulate a small image (10x10 pixels) with 3 RGB channels
# In a real scenario, you would load an image using cv2.imread()
image_data = np.random.randint(0, 255, (10, 10, 3), dtype=np.uint8)
pixels = image_data.reshape(-1, 3)
# Apply K-Means to reduce the image to 3 dominant colors (clusters)
kmeans = KMeans(n_clusters=3, n_init="auto", random_state=42).fit(pixels)
# The cluster centers represent the dominant colors
print(f"Dominant RGB Colors:\n{kmeans.cluster_centers_}")