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

【机器学习算法基础】(基础机器学习课程)-11-k-means-笔记

 

 

 

 

示例案例

为了更好地理解 K-Means 算法,下面通过一个简单的案例进行说明。

假设我们有以下 10 个二维数据点,表示不同商店的销售额(单位:千元)和顾客数(单位:人):

[(10, 100), (20, 80), (30, 70), (40, 60), (50, 50), (60, 40), (70, 30), (80, 20), (90, 10), (100, 5)]

我们希望将这些商店分成 2 个簇(K=2)。

  1. 选择 K 值:K=2。

  2. 初始化簇中心:随机选择两个初始簇中心。假设我们选择 (10, 100) 和 (100, 5)。

  3. 分配数据点

    • 计算每个数据点到 (10, 100) 和 (100, 5) 的距离。
    • 将每个数据点分配给最近的簇中心。
    • 例如,(10, 100) 距离 (10, 100) 为 0,距离 (100, 5) 为 126.49,所以它属于第一个簇。
  4. 更新簇中心

    • 计算每个簇的新中心。
    • 例如,假设第一个簇包含 (10, 100), (20, 80), (30, 70),新中心是这三个点的均值:(20, 83.33)。
  5. 重复分配数据点和更新簇中心

    • 不断重复上面的步骤,直到簇中心不再变化。

最终,我们可能得到如下两个簇:

  • 簇1:[(10, 100), (20, 80), (30, 70), (40, 60), (50, 50)]
  • 簇2:[(60, 40), (70, 30), (80, 20), (90, 10), (100, 5)]

每个簇中心分别为 (30, 72) 和 (80, 21)。

K-Means 的优点和缺点

优点

  • 简单且易于实现。
  • 计算速度快,适用于大规模数据集。
  • 聚类结果易于解释。

缺点

  • 需要事先指定簇的数量 K。
  • 对初始簇中心敏感,不同的初始值可能导致不同的结果。
  • 可能陷入局部最优解。
  • 仅适用于线性可分的数据,对复杂形状的簇效果不佳。

总结

K-Means 聚类算法通过迭代地分配数据点和更新簇中心,将数据集划分成 K 个簇。尽管有一些局限性,但由于其简单性和高效性,K-Means 广泛应用于各种聚类任务。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 3.OpenFeign与负载均衡
  • “碳”为观止,奥运会也“卷”起来了
  • 虚拟电厂,GPS北斗卫星同步时钟守护智慧能源
  • API 接口设计原则:RESTful 与 GraphQL
  • Golang | Leetcode Golang题解之第321题拼接最大数
  • RemCom和impacket.psexec简介
  • 【计算机网络---OSI七层模型】
  • 用uniapp 及socket.io做一个简单聊天app 撤回聊天及保留聊天记录 6
  • 基于RHEL7的服务器批量安装
  • Vue前端面试基础(一)
  • ptrade排坑笔记——执行k_start.sh脚本发现没有生成日志?
  • html+css+js+jquery实现一个 飘零的树叶
  • 将元组类型的日期时间转换为字符串格式time.asctime([t])
  • RuoYi-Vue源码阅读(一):验证码模块
  • Kylin系列(二)使用
  • Docker: 容器互访的三种方式
  • Flex布局到底解决了什么问题
  • idea + plantuml 画流程图
  • Java读取Properties文件的六种方法
  • Java面向对象及其三大特征
  • Promise初体验
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • windows下如何用phpstorm同步测试服务器
  • 产品三维模型在线预览
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 动态魔术使用DBMS_SQL
  • 基于游标的分页接口实现
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 让你的分享飞起来——极光推出社会化分享组件
  • 使用 5W1H 写出高可读的 Git Commit Message
  • gunicorn工作原理
  • 带你开发类似Pokemon Go的AR游戏
  • ​MySQL主从复制一致性检测
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #Ubuntu(修改root信息)
  • $ git push -u origin master 推送到远程库出错
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (c语言)strcpy函数用法
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (void) (_x == _y)的作用
  • (阿里云在线播放)基于SpringBoot+Vue前后端分离的在线教育平台项目
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (十一)图像的罗伯特梯度锐化
  • (四)js前端开发中设计模式之工厂方法模式
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)一些感悟