K-Means 算法是最简单的一种聚类算法,属于无监督学习算法。
聚类和分类最大的不同在于:分类的目标是事先已知的,而聚类则不一样,聚类事先不知道目标变量是什么,类别没有像分类那样被预先定义出来。

假设我们的样本是 {x^(1), x^(2), x^(3),……, x^(m) },每个 x^(i) ∈ R^n,即它是一个维向量。现在用户给定一个 k 值,要求将样本聚类成 k 个类簇。在这里,我们把整个算法成为聚类算法,聚类算法的结果是一系列的类簇。

步骤:
输入:样本集 D,簇的数目 k,最大迭代次数N;
输出:簇划分( k 个簇,使平方误差最小)
(1)为每个聚类选择一个初始聚类中心;
(2)将样本集按照最小距离原则分配到最邻近聚类;
(3)使用每个聚类的样本均值更新聚类中心;
(4)重复步骤(2)(3),直到聚类中心不再发生变化;
(5)输出最终的聚类中心和 k 个簇划分。

涉及距离的计算,最常用的距离是欧氏距离(Euclidean Distance),公式为:

此外,还有闵可夫斯基距离:

曼哈顿距离(也称为城市街区距离,City Block Distance):


优点:
(1) 算法简单,容易实现
(2) 算法速度很快
(3) 对处理大数据集,该算法是相对可伸缩的和高效率的,因为它的复杂度大约是O(NKt),其中,N 为数据对象的数目,t 为迭代的次数。一般来说, K <<N ,t <<N。这个算法通常局部收敛。
(4) 算法尝试找出使平方误差函数值最小的k个划分。当簇是密集的、球状或团状的,且簇与簇之间区别明显时,聚类效果较好。

缺点:
(1) K是事先给定的,一个合适的 K 值难以估计。
(2) 在 K-Means 算法中,首先需要根据初始类簇中心来确定一个初始划分,然后对初始划分进行优化。初始类簇中心的选择对聚类结果有较大的影响。一旦选择的不好,可能无法得到有效的聚类结果。可以使用遗传算法来选择合适的初始类簇中心。
(3) 算法需要不断地进行样本分类调整,不断计算调整后的新的类簇中心,因此当数据量非常大的时,算法的时间开销是非常大的。可以利用采样策略,改进算法效率。也就是初始点的选择,以及每一次迭代完成时对数据的调整,都是建立在随机采样的样本数据的基础之上,这样可以提高算法的收敛速度。

聚类算法 K-Means 简介与入门相关推荐

  1. k均值聚类算法(K Means)及其实战案例

    算法说明 K均值聚类算法其实就是根据距离来看属性,近朱者赤近墨者黑.其中K表示要聚类的数量,就是说样本要被划分成几个类别.而均值则是因为需要求得每个类别的中心点,比如一维样本的中心点一般就是求这些样本 ...

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

    摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时候上述条件得不到满足,尤其是在处理海量 ...

  3. 机器学习之聚类算法:K均值聚类(一、算法原理)

    目录 一.Kmeans 二.Kmeans的流程 三.距离度量方式 3.1.闵可夫斯基距离 3.2.马哈拉诺比斯距离 3.3.其他 四.Kmeans聚类实例 五.Kmeans存在的问题 5.1.初始点的 ...

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

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

  5. 初识聚类算法:K均值、凝聚层次聚类和DBSCAN 转载的聚类总结

    http://blog.sina.com.cn/s/blog_62186b460101ard2.html

  6. 数据算法-K Means

    code1 转载于:https://www.cnblogs.com/codewan/p/11532785.html

  7. 小白入门谱聚类算法原理与实现

    小白入门谱聚类算法原理与实现 小白入门谱聚类算法原理与实现 1. 谱聚类是什么? 2.谱聚类步骤 2.1 谱聚类构图 2.2 谱聚类切图 2.2.1RatioCut 2.2.2Ncut 3谱聚类实现 ...

  8. R实现K均值算法,层次聚类算法与DBSCAN算法

    1.聚类的基本概念 聚类分析(cluster analysis)仅根据在数据中发现的描述对象及其关系的信息,将数据对象分组.其目标是,组内的对象相互之间是相似的(相关的),而不同组中的对象是不同的(不 ...

  9. k-means聚类算法的详解和实现

    一.相异度计算  在正式讨论聚类前,我们要先弄清楚一个问题:如何定量计算两个可比较元素间的相异度.用通俗的话说,相异度就是两个东西差别有多大,例如人类与章鱼的相异度明显大于人类与黑猩猩的相异度,这是能 ...

  10. 不足20行 python 代码,高效实现 k-means 均值聚类算法

    scikti-learn 将机器学习分为4个领域,分别是分类(classification).聚类(clustering).回归(regression)和降维(dimensionality reduc ...

最新文章

  1. Java这个高级特性,很多人还没用过!
  2. 华为天才少年稚晖君自制硬萌机器人,开源5小时,GitHub收获317星!
  3. centos 5.4 x64 安装nagios 3.2.3
  4. Centos7+Mysql5.7实现主从复制
  5. 刚安装的python如何使用-python中RabbitMQ的使用(安装和简单教程)
  6. 常用深度学习模型介绍(1)
  7. Asp.Net.Core 系列-中间件和依赖注入进阶篇
  8. oracle中的一些基本概念
  9. javaweb回顾第二篇tomcat和web程序部署
  10. jQuery修改数组$.map
  11. ffmpeg java 使用_macos下ffmpeg使用及java调用
  12. 一头扎进Node(三) - File System
  13. python棋子判定_python微信跳一跳系列之棋子定位颜色识别
  14. java自动类型提升_Java中的基本数据类型转换(自动、强制、提升)
  15. Linux下Nginx+多Tomcat负载均衡实现详解
  16. 前端开发如何独立解决跨域问题
  17. Java 继承 小练习
  18. swift 下标 subscript
  19. kata-container初探
  20. .NET ASP.NET 页生命周期概述

热门文章

  1. LeetCode 244. 最短单词距离 II(哈希map+set二分查找)
  2. LeetCode 246. 中心对称数(哈希)
  3. LeetCode 1064. 不动点(二分查找)
  4. LeetCode 337. 打家劫舍 III(记忆化+递归)
  5. 石头剪刀布程序流程图_机器学习终章:剪刀石头布猜拳机器人
  6. 垃圾回收:引用计数与分代收集机制
  7. python中if命令简单介绍及注意事项(含笔记)
  8. 论文阅读笔记(二)【ACL2021】知识抽取NER
  9. 刷新SOTA!Salesforce提出跨模态对比学习新方法,仅需4M图像数据!
  10. 领域应用 | 美团商品知识图谱的构建及应用