本文主要介绍K均值的运行原理、代价函数、聚类数量的选择等内容。

1.运行原理

假如有以下数据集,并且要将其分为两类。

首先使用生成两个聚类中心(图中的红蓝点)。之后该算法会计算每个样本点和两个聚类中心的距离,根据距离的远近把样本点分配给聚类中心。

第一次聚类之后的结果如下:


之后K-均值算法根据之前计算出来的距离移动聚类中心,移动之后的结果如下所示。

之后重复之前的过程,完成聚类。

通过以上例子,可知K-均值的计算过程是:
首先随机初始化K个聚类中心。之后计算样本与K个聚类中心的距离,选择最近的聚类中心进行分类。

2.代价函数

K均值算法的代价函数为:

其中:μ_k代表第K个聚类中心,c^((m) )代表样本目前所属的聚类,μ_c (i)代表第i个样本所属的聚类中心。

3.聚类中心

3.1初始化

首先K的值要小于样本的数量,之后在样本中随机挑选K个样本点作为初始聚类中心,为了避免算法陷入局部最优解,可以多次初始化K值,然后多次(50-1000次)运行算法。之后选择代价函数最小的初始化K值。

3.2聚类中心的数量选择

通常的方法是多次选择不同的聚类中心比较代价函数的结果。

如图所示,在K=3时,代价函数变化最大,在3以后代价函数减低的较慢,如果选择k>3会增加计算时间,因此在这个例子中可以选择K=3.

聚类中心数量的选择大部分时候还是要依赖于实践经验,以上的方法知识为大家提供一个思路。

机器学习笔记(12)— K均值算法相关推荐

  1. 01. 机器学习笔记01——K近邻算法 , CV_example

    K近邻算法(K-nearest neighbor,KNN算法) 李航博士<统计学习方法> 最近邻(k-Nearest Neighbors,KNN)算法是一种分类算法 应用场景:字符识别.文 ...

  2. 百面机器学习—7.K均值算法、EM算法与高斯混合模型要点总结

    文章目录 一.总结K均值算法步骤 二.如何合理选择K值? 三.K均值算法的优缺点是什么? 四.如何对K均值算法进行调优? 五.EM算法解决什么问题? 六.EM算法流程是什么? 六.EM算法能保证收敛嘛 ...

  3. (学习笔记)聚类算法 - k均值算法(k-means)

    聚类之K均值算法 聚类介绍 k均值算法步骤 Python实现 参考文献 聚类介绍 聚类是一种经典的无监督学习方法. 聚类的目的是将数据集中的样本划分为若干个通常是不相交的子集,每个子集被称为簇,以此来 ...

  4. k均值算法python实现(吴恩达机器学习作业)

    k均值算法python实现(吴恩达机器学习作业) 题目要求 数据集 读取mat文件 K-means 实现 结果 问题 题目要求 采用K均值算法对样本进行聚类. 编写K均值算法源代码,对ex7data2 ...

  5. K均值算法【K-means】

    一.K-Means算法流程 K均值算法是学习无监督学习的第一个算法,这个算法理解和实现都比较简单,算法的目的是将数据分成K组. 为了达到这个目的,算法首先随机初始化k个数据点(聚类中心),然后遍历所有 ...

  6. K 均值算法-如何让数据自动分组

    公号:码农充电站pro 主页:https://codeshellme.github.io 目录 1,K 均值算法 2,K 均值算法聚类过程 3,K 均值算法的实现 4,准备数据点 5,对数据聚类 6, ...

  7. k均值算法原理详细讲解以及matlab代码实现

    有研究生物电信号处理和机器学习的欢迎加我qq429500506共同交流学习进步. 最近更新文章的频率太低了,主要原因是不想为了发文章而发文章,想潜心研究,写好文章,顺便想说一句开源万岁,最近一个月虽然 ...

  8. k均值算法 二分k均值算法_如何获得K均值算法面试问题

    k均值算法 二分k均值算法 数据科学访谈 (Data Science Interviews) KMeans is one of the most common and important cluste ...

  9. k均值算法 二分k均值算法_使用K均值对加勒比珊瑚礁进行分类

    k均值算法 二分k均值算法 Have you ever seen a Caribbean reef? Well if you haven't, prepare yourself. 您见过加勒比礁吗? ...

  10. python机器学习库sklearn——k均值聚类

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 k均值聚类的相关的知识内容可以参考 http://blog.csdn.net/luanpeng825485697/article/de ...

最新文章

  1. servlet response 中文乱码
  2. sql server 表索引碎片处理
  3. 黑客都用Python?学习Python的4个理由!
  4. MAC软件下载比较好的三个第三方网站
  5. java 枚举高级应用_【后端】java基础(5.6)java高级基础之枚举
  6. python如何去掉字符串‘\xa0’
  7. Django从理论到实战(part7)--关于视图函数与URL映射
  8. python展开list嵌套,并解决from compiler.ast import flatten报错ModuleNotFoundError: No module named ‘compiler‘
  9. 详解iPhone Tableview分批显示数据
  10. Rust: Rangechar 'a'..'z' 能干什么?......待续
  11. 微信开发者工具关联gitee账户
  12. 景区门票怎么在线上渠道分销?
  13. 职场技巧:高效实用的四象限法则
  14. 我为什么不看好微信小程序_0
  15. Laravel执行seeder命令出现class *** does not exist
  16. JS做的一款动感超酷banner
  17. Shell脚本发送邮件(CentOS+mailx+QQ邮箱)
  18. casio计算机隐藏游戏fx-82ES,CASIOlowbar;fx-82ES计算器隐藏功能
  19. Keras Tuner官方教程
  20. 《化工流体力学》课程笔记(四)

热门文章

  1. DBSCAN 聚类算法详解
  2. DBSCAN聚类算法的实现
  3. cad导入进max线会乱_AutoCAD导入3dmax显示错乱(z轴归零).doc
  4. 想做产品经理,产品经理培训靠谱吗?
  5. Python3爬虫与多线程
  6. 如何克隆路由器MAC地址,怎么操作?
  7. 华为网络设备交换机路由器查看MAC地址表项命令方法
  8. 抓包工具Charles-Windows下http/https抓包
  9. Linux为sh脚本文件添加执行权限
  10. Java、JSP公文流转系统分析与实现