深圳Yolo 视觉
深圳
立即加入
词汇表

K-均值聚类

了解 K-均值聚类,这是一种用于将数据分组到聚类中的关键无监督学习算法。 探索它的过程、应用和比较!

K-Means 聚类是无监督学习领域广泛使用的一种算法。 无监督学习领域广泛使用的算法。 将数据集划分为不同的、不重叠的子群。在更广泛的 在机器学习(ML)背景下,这种方法对于发现数据集中隐藏的模式和结构至关重要。 在机器学习(ML)的大背景下,这种方法对于发现未标记数据中的隐藏模式和结构至关重要。该算法通过将数据点 K$ 个群组,其中每个点都属于平均值最近的群组,作为群组的原型。 组的原型。这种方法有助于最大限度地减少每个簇内的方差,确保同一簇内的数据点尽可能相似,同时又能保持簇内数据的一致性。 尽可能相似,同时保持不同组之间的区别。

算法如何运行

K-Means 的过程是迭代的,首先要选择 $K$ 初始中心点,作为簇的中心点。 作为聚类的中心点。这些中心点可以随机选择,也可以通过更智能的初始化技术选择,如 K-means++ 初始化 来提高收敛速度。然后,该算法会经过两个主要步骤,直到结果趋于稳定:

  1. 分配:训练数据中的每个数据点 训练数据中的每个数据点都被分配给最近的中心点 最近的中心点。 欧氏距离。这一步可有效地将数据 成 $K$ 簇。
  2. 更新:每个群集的新中心点是通过计算分配给该特定群集的所有数据点的平均值来计算的。 的平均值。

如此循环往复,直到中心点不再明显移动,表明算法已经收敛。 确定聚类的最佳数目是这一过程的关键部分,通常使用的技术包括 肘法 或通过分析 剪影得分 来测量结果聚类之间的分离距离。

人工智能在现实世界中的应用

K-Means 聚类技术用途广泛,适用于各行各业的数据挖掘和分析任务。 数据挖掘和分析任务。

  • 客户细分:企业根据客户的购买行为、人口统计或浏览历史记录对客户进行分组 行为、人口统计或浏览历史对客户进行分组。通过识别不同的群体,企业可以量身定制营销策略。 策略,类似于零售业中的人工智能如何改进客户定位和库存管理。 客户定位和库存管理。
  • 图像压缩:在计算机视觉(CV 计算机视觉 (CV) 领域,K-Means 被用于 颜色量化。这种技术通过对像素值进行聚类,减少图像中独特颜色的数量、 有效地进行 降维,同时 保持图像的视觉完整性。
  • 异常检测:通过学习正常数据集群的结构,系统可以识别出远离任何中心点的异常值。 远离任何中心点的异常值。这对于安全应用和 网络流量异常检测

物体检测历史中的 K-Means

而现代物体探测器,如 Ultralytics YOLO11通常 虽然现代物体检测器(如 Ultralytics YOLO11)通常采用先进的回归技术或无锚头技术,但 K-Means(K-Means)在检测模型的发展过程中起到了关键作用。 检测模型的演变中发挥了关键作用。早期的迭代,如 YOLOv2 到YOLOv5,使用 K-Means 聚类对 COCO 数据集的边界框 数据集的边界框维度进行 K-Means聚类,以确定最佳的 锚点框。这些预先计算的锚点 为模型预测物体形状提供了更好的先验,从而显著提高了训练的稳定性和召回率。

K-Means vs. K-Nearest Neighbors (KNN)

K-Means 与 K-Nearest Neighbors (KNN)混为一谈,但二者的目的根本不同。 但二者的目的根本不同。

  • K-Means是一种用于聚类 的无监督算法。它 它不需要标注数据,重点在于发现数据集的内在结构。
  • KNN是一种监督学习算法,用于 图像分类和回归。它 是一种监督式学习算法,用于图像classify 和回归。

另一个相关概念是 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_}")

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入