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

K-Means算法原理和简单测试

这是学习笔记的第 2011 篇文章


  今天学习了下K-Means算法,很多语言和工具都有成型的库和方法,不过为了能够督促自己理解,还是做了一些额外的工作,自己设想了一个例子,假设有10名员工,我们根据他们的技术能力和沟通能力来评估一下他们的综合能力,看看他们的资质,自己拼凑了一些数据情况如下:

员工技术能力指数沟通能力指数
P11010
P255
P375
P477
P566
P667
P765
P899
P989
P1086

散点图的信息如下:

640?wx_fmt=png

我们选择P1,P2为质心,即他们作为参照标准,分别和其他的员工数据进行比对,得到一个差异值,即两点之间的距离,可以使用欧式距离来得到,比如P1到P3的距离就是(10-7)(10-7)+(10-5)(10-5)开根号,得到的值为5.8

P2到P3的距离是(7-5)(7-5)+(5-5)(5-5) 开根号,得到的值为2

按照这种算法,得到如下的一个列表:


P1P2
P35.82
P44.22.8
P55.71.4
P652.2
P76.41
P81.45.7
P92.25
P104.53.1

从以上的数据,可以看出P1和P8,P9的距离相对最近,而P2和P3,P4,P5,P6,P7,P10的距离相对更近。 

则分组的情况为:

组A: P1,P8,P9

组B: P2,P3,P4,P5,P6,P7,P10

即组A的3个员工的整体素质较高,而另外一组的水平则有待提高。

因为最开始选择P1,P2是随机的,所以计算距离得到的模型还是不够准确,我们需要基于刚才的数据重新选择质心,这里我们可以使用每组的平均值来计算。

选出新的代表(质心),这里是各个组的平均值,即:

组A: (10+9+8)/3, (10+9+9)/3 约为(9,9)

组B: (5+7+7+6+6+6+9)/7, (5+5+7+6+7+5+6)/7 约为(6,5)

这里的两个质心如果精确到小数点后是没有匹配的员工的,所以在这里可以理解是虚拟的。 

我们以两个计算后的新的节点作为参考,计算后得到的结果如下:


P1_newP2_new
P11.46.4
P25.71
P34.51
P42.82.2
P54.21
P63.62
P750
P805
P914.5
P103.12.2

所以重新分组后的结果为:

组A: P1,P8,P9

组B: P2,P3,P4,P5,P6,P7,P10

这次的结果和上次没有任何变化了,说明已经收敛,聚类结束,聚类结果和我们最开始设想的结果完全一致

当然这只是一个初步的测试和练习,里面的所有计算都是口算然后翘着计算器完成的。 

如果要分析的更实用一些,应该引入更多的维度,同时对于数据的分类可以做一下扩充来看。 

640?

相关文章:

  • 如何让你的工作能够大量输出
  • 数据生命周期管理的初步实现
  • MySQL分布式高可用的一个补充
  • MySQL锁
  • 难忘的三件苦差事
  • 千与千寻,真是一部给大人看的动画片
  • 聊聊高考分数线和选择
  • MySQL中间件的连接错误问题排查
  • 一次宕机问题的总结复盘
  • 所谓简单的事情
  • 数据分析上千部动漫作品
  • 生活中的一些文字调料
  • 最近的方向调整
  • 尴尬的bug:一条查询语句让MySQL崩溃
  • 你平时锻炼身体吗
  • [Vue CLI 3] 配置解析之 css.extract
  • 2017-08-04 前端日报
  • Debian下无root权限使用Python访问Oracle
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Ruby 2.x 源代码分析:扩展 概述
  • 半理解系列--Promise的进化史
  • 力扣(LeetCode)965
  • 马上搞懂 GeoJSON
  • 深度学习入门:10门免费线上课程推荐
  • 温故知新之javascript面向对象
  • 线性表及其算法(java实现)
  •  一套莫尔斯电报听写、翻译系统
  • 一些关于Rust在2019年的思考
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 走向全栈之MongoDB的使用
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #考研#计算机文化知识1(局域网及网络互联)
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (过滤器)Filter和(监听器)listener
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)四层和七层负载均衡的区别
  • .equals()到底是什么意思?
  • .NET 8.0 中有哪些新的变化?
  • .NET CLR Hosting 简介
  • .Net core 6.0 升8.0
  • .net core 依赖注入的基本用发
  • .NET 中 GetProcess 相关方法的性能
  • /etc/fstab 只读无法修改的解决办法
  • [ NOI 2001 ] 食物链
  • [100天算法】-二叉树剪枝(day 48)