当前位置: 首页 > news >正文

K-means 聚类算法学习

一、聚类算法概述

聚类是机器学习中的一种无监督学习方法,核心思想是将相似的样本划分到同一组(簇),而不依赖于预先给定的标签。与监督学习不同,聚类问题中没有明确的 “答案” 作为参考,其主要难点在于如何评估聚类效果以及合理调参。

二、距离度量

在聚类中,样本间的相似度通常通过距离来衡量,常用的距离度量方式有以下两种:

(一)欧式距离

欧式距离是最常见的距离度量方式,衡量的是多维空间中两个点之间的绝对距离。

  • 二维空间公式:d 等于 x1 减 x2 的平方加上 y1 减 y2 的平方,整体开根号

  • 三维空间公式:在二维基础上增加 z1 减 z2 的平方项,整体开根号

  • n 维空间公式:d 等于从 i=1 到 n,每个维度上 x1i 减 x2i 的平方和,整体开根号

  • 特点:直观反映两点间的直线距离,适用于多数常规场景。

(二)曼哈顿距离

曼哈顿距离又称出租车距离,指两个点在标准坐标系上的绝对轴距总和。

  • 平面上两点((x1,y1)\)与((x2,y2)\)的曼哈顿距离公式:d(i,j)=∣x1​−x2​∣+∣y1​−y2​∣

  • 特点:更适合描述网格状空间中两点的实际移动距离(如城市中出租车的行驶路径)。

三、K-means 算法步骤

K-means 是最经典的聚类算法之一,其核心流程如下:

  1. 初始化:设定聚类簇数k,随机选择k个样本点作为初始聚类中心。

  2. 样本聚类:计算每个样本到各个聚类中心的距离,将样本指派到距离最近的中心所属的簇中,形成当前聚类结果。

  3. 更新中心:针对每个簇,计算簇内所有样本的均值,将该均值作为新的聚类中心。

  4. 迭代收敛:重复步骤 2 和 3,直到聚类中心不再明显变化(收敛)或达到最大迭代次数,输出最终聚类结果。

四、算法评估 ——CH 指标

CH 指标是评估聚类效果的常用指标,其计算基于类内紧密度和类间分离度:

  • 类内紧密度:通过类中各点与类中心的距离平方和衡量。

  • 类间分离度:通过各类中心点与数据集总中心点的距离平方和衡量。

  • 特点:CH 值越大,表明簇内样本越紧密、簇间差异越明显,聚类效果越好。

五、K-means 算法的优缺点

(一)优点

  • 原理简单直观,易于理解和实现。

  • 计算效率高,处理大规模数据集时表现良好,复杂度与样本数量呈线性关系。

  • 适用于常规分布的数据集,聚类效果稳定。

(二)缺点

  • 需预先指定簇数k,而k的最优值往往难以确定。

  • 对初始聚类中心的选择敏感,不同初始值可能导致不同聚类结果。

  • 难以处理非凸形状、密度差异大的簇,对噪声和离群值较敏感。

六、代码实现相关工具

(一)数据集生成:make_blobs()

该函数用于生成适合聚类的模拟数据集,主要参数如下:

参数

说明

n_samples

数据样本点个数,默认值为 100

n_features

每个样本的特征数(数据维度),默认值为 2

centers

类别数(簇的数量),默认值为 3

cluster_std

每个类别的方差,控制簇内样本的分散程度

center_box

聚类中心的取值范围,默认值为 (-10.0, 10.0)

shuffle

是否打乱数据,默认值为 True

random_state

随机种子,用于固定生成的数据,便于结果复现

(二)聚类实现:KMeans()

该类用于执行 K-means 聚类算法,主要参数如下:

参数

说明

n_clusters

聚类簇的数量(即k值)

max_iter

最大迭代次数,默认值为 300

n_init

算法运行次数(每次使用不同初始中心),默认值为 10

random_state

随机种子,控制初始中心的选择,保证结果可复现

http://www.dtcms.com/a/342509.html

相关文章:

  • matplotlib 6 - Gallery Images
  • 在 Linux 中全局搜索 Word 文档内容的完整指南
  • 从零搭建Kubernetes集群:常见踩坑与解决方案
  • Django中的MVC和MVT模式
  • Unity接入DeepSeek实现AI对话功能
  • 解析火语言 RPA 核心功能:让流程自动化更高效​
  • leetcode 76 最小覆盖子串
  • 有关spring-ai的defaultSystem与systemMessage优先级
  • AI 发展的伦理困局:在创新与规范间寻找平衡
  • MYSQL库及表的操作
  • Linux进程间传递文件描述符:为什么不能用FIFO而要用Unix域套接字?
  • 效果驱动复购!健永科技RFID牛场智能称重项目落地
  • 计算两幅图像在特定交点位置的置信度评分。置信度评分反映了该位置特征匹配的可靠性,通常用于图像处理任务(如特征匹配、立体视觉等)
  • 从数据抽取到加载:如何保障ETL中间环节的高效与稳定
  • 缓存与Redis
  • LG P5008 [yLOI2018] 锦鲤抄 Solution
  • 读《精益数据分析》:精益画布——创业与产品创新的高效工具
  • RabbitMQ:消费者可靠性(消费者确认、消费失败处理、业务幂等性)
  • RabbitMQ面试精讲 Day 26:RabbitMQ监控体系建设
  • 1. 准备工作---数据分析编程 - 从入门到精通
  • uniapp 自定义组件封装、easycom匹配规则
  • Go语言变量声明与初始化详解
  • TDengine IDMP 运维指南(管理策略)
  • CRII-Net
  • 【领码课堂】让Java数据检索更智能——Bean Searcher全景解读
  • 从”0“开始学JAVA——第九节下 泛型和集合框架
  • #运维 | 前端 # Linux http.server 实践:隐藏长文件名,简短路径 (http://IP:port/别名 ) 访问
  • AI研究引擎的简单技术实现步骤
  • Web 安全之 HTTP 响应截断攻击详解
  • JavaScript 系列之:图片压缩