一、聚类与分类的区别

分类:类别已知,通过对已知分类的数据进行训练和学习,找到这些不同类的特征,再对未分类的数据进行分类。是有监督学习。

聚类:事先不知道数据会分为几类,通过聚类分析将数据聚合成几个群体。聚类不需要对数据进行训练和学习。属于无监督学习。

二、k-means 聚类(物以类聚,人以群分)

1、首先输入 k 的值,即我们指定希望通过聚类得到 k 个分组;

2、从数据集中随机选取 k 个数据点作为初始大佬(质心);

3、对集合中每一个小弟,计算与每一个大佬的距离,离哪个大佬距离近,就跟定哪个大佬。

4、这时每一个大佬手下都聚集了一票小弟,这时候召开选举大会,每一群选出新的大佬(即通过算法选出新的质心)。

5、如果新大佬和老大佬之间的距离小于某一个设置的阈值(表示重新计算的质心的位置变化不大,趋于稳定,或者说收敛),可以认为我们进行的聚类已经达到期望的结果,算法终止。

6、如果新大佬和老大佬距离变化很大,需要迭代3~5步骤。

三、举例

有6个点,从图上看应该可以分成两堆。现在我手工地把 k-means 计算过程演示一下,同时检验是不是和预期一致:

1.设定 k 值为2

2.选择初始大佬(就选 P1 和 P2)

3.计算小弟与大佬的距离:

从上图可以看出,所有的小弟都离 P2 更近,所以次站队的结果是:

A 组:P1 
B 组:P2、P3、P4、P5、P6

4.召开选举大会:

A 组没什么可选的,大佬就是自己 
B 组有5个人,需要重新选大佬,这里要注意选大佬的方法是每个人 X 坐标的平均值和 Y 坐标的平均值组成的新的点,为新大佬,也就是说这个大佬是“虚拟的”。因此,B 组选出新大哥的坐标为:P 哥((1+3+8+9+10)/5,(2+1+8+10+7)/5)=(6.2,5.6)。 
综合两组,新大哥为 P1(0,0),P哥(6.2,5.6),而P2-P6重新成为小弟。

5.再次计算小弟到大佬的距离: 

这时可以看到P2、P3离P1更近,P4、P5、P6离P哥更近,所以第二次站队的结果是:

A 组:P1、P2、P3 
B 组:P4、P5、P6(虚拟大哥这时候消失)

6.第二届选举大会: 
同样的方法选出新的虚拟大佬:P哥1(1.33,1),P哥2(9,8.33),P1-P6都成为小弟。

7.第三次计算小弟到大佬的距离: 

这时可以看到 P1、P2、P3 离 P哥1 更近,P4、P5、P6离 P哥2 更近,所以第二次站队的结果是: 
A 组:P1、P2、P3 
B 组:P4、P5、P6

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

四、详解

k-means算法以数据间的距离作为数据对象相似性度量的标准,因此选择计算数据间距离的计算方式对最后的聚类效果有显著的影响,常用计算距离的方式有:余弦距离、欧式距离、曼哈顿距离等。本文以欧式距离为例。

欧式距离公式:

举例:若数据为2维:

其计算欧式距离如下(可理解为D表示维度,i,j表示行数):

通过上述公式可计算出每对数据对象间的距离,根据距离的远近进行聚类成指定的类别数K。

对每一类中的数据初步选取类心,取的方式有多种如:

1.该类所有数据的均值;

2.随机取k个数据作为类心;

3.选取距离最远的k个点作为类心等。

以上方法均需要对初步的类心进行迭代,当类心变化缓慢时便可认为收敛,此时该点便为最终的类型。本文以方法1为例:

表示第k类,表示第k类中数据对象的个数。类心迭代过程如下:

通常迭代终止的条件有两种:1)达到指定的迭代次数T;2)类心不再发生明显的变化,即收敛。

五、缺点:

  • 聚类中心的个数K 需要事先给定,但在实际中这个 K 值的选定是非常难以估计的,很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适
  • Kmeans需要人为地确定初始聚类中心,不同的初始聚类中心可能导致完全不同的聚类结果。(可以使用Kmeans++算法来解决)

针对上述第2个缺陷,可以使用Kmeans++算法来解决。

参考文章地址:

https://blog.csdn.net/huangfei711/article/details/78480078

https://blog.csdn.net/hanxia159357/article/details/81530361

Kmeans++算法地址:https://blog.csdn.net/zll0927/article/details/17000675

K-mean clustering(K均值聚类算法)相关推荐

  1. k均值聚类算法优缺点_Grasshopper实现K均值聚类算法

    本文很长很长,有很多很多图,包含以下部分: 1.算法简介 2.如何分类平面点 3.如何分类空间点 4.如何分类多维数据 5.后记 提醒:以下内容包括:智障操作,无中生友,重复造轮子 等 1.算法简介 ...

  2. K-Means(K均值聚类算法)

    K-Means(K均值聚类算法) 1.前言 要学习聚类算法就要知道聚类学习算法是什么,为什么要学习聚类学习聚类学习算法,有什么用途,下面就简单的做一下介绍,并且详细的说明k-means均值聚类学习算法 ...

  3. k均值聚类算法python_K均值和其他聚类算法:Python快速入门

    k均值聚类算法python This post was originally published here 这篇文章最初发表在这里 Clustering is the grouping of obje ...

  4. 机器学习实战-61:K均值聚类算法(K-Means)

    K均值聚类算法(K-Means) 深度学习原理与实践(开源图书)-总目录,建议收藏,告别碎片阅读! 机器学习分为监督学习.无监督学习和半监督学习(强化学习).无监督学习最常应用的场景是聚类(clust ...

  5. 计算机视觉面试考点(14)K均值聚类算法(K-Means)

    计算机视觉工程师在面试过程中主要考察三个内容:图像处理.机器学习.深度学习.然而,各类资料纷繁复杂,或是简单的知识点罗列,或是有着详细数学推导令人望而生畏的大部头.为了督促自己学习,也为了方便后人,决 ...

  6. 【模式识别】K均值聚类算法应用实验报告及MATLAB仿真

    一. 实验目的 1.掌握K均值聚类算法的原理和实现过程: 2.掌握K均值聚类算法的应用方法. 二. 实验内容 1.彩色图像分割 选择一幅图像,分别按三种颜色数进行彩色图像分割的结果(原图和分割图).步 ...

  7. K均值聚类算法(HCM,K-Means)

    K均值聚类核心思想如下: 算法把n个向量分为个组,并求每组的聚类中心,使得非相似性(或距离)指标的价值函数(或目标函数)达到最小.当选择欧几里德距离为组j中向量与相应聚类中心间的非相似性指标时,价值函 ...

  8. K均值聚类算法(Kmeans)讲解及源码实现

    K均值聚类算法(Kmeans)讲解及源码实现 算法核心 K均值聚类的核心目标是将给定的数据集划分成K个簇,并给出每个数据对应的簇中心点.算法的具体步骤描述如下. 数据预处理,如归一化.离群点处理等. ...

  9. python(scikit-learn)实现k均值聚类算法

    k均值聚类算法原理详解 示例为链接中的例题 直接调用python机器学习的库scikit-learn中k均值算法的相关方法 from sklearn.cluster import KMeans imp ...

  10. 机器学习之无监督学习-K均值聚类算法

    机器学习之无监督学习-K均值聚类算法 对于无监督学习,有两类重要的应用,一个是聚类,一个是降维.我们今天主要学习聚类中的K均值聚类. 我们先看看下图,图a为原始的数据点,我们想要对图a的数据点进行分类 ...

最新文章

  1. openssh配置终极一帖
  2. 计算机二级C语言程序题常见题型,计算机二级C语言题型和评分标准
  3. ARM9学习笔记之——MMU
  4. UVA 220 Othello
  5. 数据结构与算法笔记(十二)—— 查找算法(顺序查找、二分法查找)
  6. 这些大佬,真的牛逼了!
  7. Django基本命令
  8. CVPR 2021 | 用于动作识别,即插即用、混合注意力机制的 ACTION 模块
  9. 一道BT的面试题之我见
  10. 2nbsp;时间管理和内存管理
  11. lbs的核心技术都有哪些?_直击现场 | 腾讯云“揭秘智慧出行核心技术与创新实践”活动完美落幕!...
  12. HTML Parsing Error KB927917
  13. Python基础学习九 单元测试
  14. 计算机组成原理cu_计算机组成原理19----控制单元CU设计
  15. java8中数据类型_Java 8中 基本数据类型
  16. Stimulsoft Dashboards.WEB 23.1.8 完美Patch
  17. 【NetWorkX实例(4)】Football数据集
  18. 插值查找(两种方法)
  19. Python: SQLAlchemy 打印 SQL语句
  20. 自动为 Gatsby网站中的 Markdown 页面添加 sidebar

热门文章

  1. codeforces1467E Distinctive Roots in a Tree
  2. 【php毕业设计】基于php+mysql的社区交流网站设计与实现(毕业论文+程序源码)——社区交流网站
  3. 【深度学习】BatchSize设置
  4. 下行期的资本,正在追逐「猫品牌」
  5. 计算机应用基础IE浏览器设置,计算机应用基础IE浏览器设置学习笔记.docx
  6. 软件设计师刷题(2)
  7. HihoCoder - 1370 快乐数字
  8. 无盘服务器内存回写速度,网吧文化监管平台异常频繁回写数据导致无盘客户机游戏秒卡,打字卡...
  9. 火车头采集器php,火车头采集器3.0采集图文教程
  10. NYOJ -1364 (第十一届河南省赛)