一文详解激光点云的物体聚类:https://mp.weixin.qq.com/s/FmMJn2qjtylUMRGrD5telw

引言:

Q:什么是聚类算法?

现在我们在做的深度学习当中,比如图像的识别和分类等等,这样的一般是有监督的学习。但是在现实当中有很多的数据他都是没有标签的,所以我们需要进行一种无监督或者非监督的学习。因此,聚类算法是一种很好的解决方案。

Q:聚类算法分为哪些类?

1、k-means算法原理

1.1核心思想:

k-means聚类算法的核心思想主要是选定K的值。K就表示你将这堆数据分成几个组。

在机器学习算法中有很多是需要我们去进行调参的,在这里我们所需要的调的参数就是这个K的值,K的不同选取是会影响到我们的聚类效果,

1.2算法实现/流程是什么:

比如说我有一堆数据,假设K=2,那么就是我希望把这一堆数据分为2组,所以每一组我都需要有一个聚类的中心,这个中心是怎么选取的呢?

  • 第1步:刚开始是随机选取的,随机选取两个点分别当做两个组的中心A1、A2。中心点选取之后,这个中心点就是每个组的初始点,刚开始中心点都是随机选取的。
  • 第2步:计算这个A1中心点与整个数据集里边每一个数据点之间的一个距离(就是计算除了与自身之外的其他点的距离),计算完之后就会有一个值。
  • 第3步:第二个点A2(也就是令K=2时,选取的两个中心点,第一个已经在第一步计算过了)他也会计算他到所有数据点的一个距离,比如说在整个数据集中存在一个B点,这个B点会与选取的两个中心点A1、A2都计算一遍距离,如果B点与A1的距离小于B点与A2的距离,那么就表明B点距离A1比较近,那么就将B点划分到A1这个中心点所代表的的组中。
  • 第4步:将所有点都做一个计算并进行一个距离的比较,我和哪一个中心点的距离小,那么我就其分到那一个中心点所代表的一组中,最终把所有点都跑一边。之后所有的点都会有一个分类归属。(此处是分成了2组)
  • 第5步:当分成2组之后,并没有结束。他还会进行计算。此时把中心点进行移动(因为中心点是你自己随机选取的,这个中心点并不一定是你划分为组之后所有数据的一个中心),为了将随机选取的中心点移动到该组真正所在的一个中心点,还是需要进行一个计算。

(移动的方式就是:因为我们随机选取的中心点A1和我们的组里边的每一个点都有一个距离,他会算出一个平均值,他这个平均值就是我们随机选取的初始点A1移动的一个距离(移动的话不是还需要方向吗???),按照这个距离进行移动假设此时移动到了N1点,这个N1点就是我们新算出来的一个中心点。那么此时这个N1点就会与数据集里边所有的点(注意是整个数据集不是每一个组内)里边所有的数据点再计算一遍距离,计算出来之后我就有了N1点和整个数据集内每一个点的距离了,再进行与另外一组的新中心点的距离比较,再次进行分组划分;

那么类似的,另一个随机选取的初始点A2他也会计算出来一个移动的距离(就是平均值,这个平均值的求出是与该组内即与自己所在的组内其他点距离的平均值不是所有整个数据集),假设A2移动到了N2,那么N2这个点也会和数据集里边所有的点(注意是整个数据集不是每一个组内)也计算出来一个距离。比如此时整个数据集中有一个点E,如果该点E与N1的距离小于E与N2的距离,那么这个E点就划分到N1这个组里边去,这样操作又会把整个数据集分成两组。之后就是这样不断的循环,最后经过不断的移动,比如说移动到了最终的中心点(怎么确定这个是最终的中心点呢?))

确定某次移动过后这个就是最终的中心点F的方式:比如我们每次移动都会有一个中心点,将移动后本次的中心点F与上一次的中心点L进行一个比较,也就是计算F到L的一个距离,如果这个距离小于某一个阈值,(这个阈值是事先设定好的),如果此时F到L的这个距离小于阈值,那就表明我这个中心点F他就不再移动了(此时基本上我把所有的数据都已经分组好了,没必要移动了)。

PS:其实整个过程就是在不断的计算比较的一个过程,直到最终找到中心为止。(所以就是不断的计算当前聚类的中心或者组的中心到所有点的距离,然后比较,看看我到底被分到哪一组,最终就会找到这个组的中心)

1.3基于sklearn(机器学习库)算法库实现的案例

虚拟的数据K到底选多少,会有一个评估的得分,得分越高,那么我这个K就选哪一个。

1.4K-means算法优缺点

2、应用时的一些Trick

(1)第一步随机的选取一个点,但是我们在应用的时候不能真的随机选择数据点中的随便一个点。

(2)k-means是受初始化影响的,不同初始化会不一样k-means的结果。所以对于同样的数据会执行几遍k-means,然后选取损失函数最小的那一次k-means作为最终的结果。

(3)在E-step的时候,要求n个点到k个中心点的nearset neighbor,我们可以使用k-d tree或者八叉树去做一些加速。

(4)还有一种变种的k-means叫做mini-batch,即在每一次迭代里边我都选不一样的subset of作为我算的数据,在每一次迭代里边我运算量就少了。代价就是可能会产生更坏的结果。

3、实战

-----

机器学习中的聚类算法(1):k-means算法相关推荐

  1. 机器学习中的聚类算法有哪几种?

    目前,聚类算法被广泛应用于用户画像.广告推荐.新闻推送和图像分割等等.聚类算法是机器学习中一种"数据探索"的分析方法,它帮助我们在大量的数据中探索和发现数据的结构.那么机器学习中的 ...

  2. kmeans改进 matlab,基于距离函数的改进k―means 算法

    摘要:聚类算法在自然科学和和社会科学中都有很普遍的应用,而K-means算法是聚类算法中经典的划分方法之一.但如果数据集内相邻的簇之间离散度相差较大,或者是属性分布区间相差较大,则算法的聚类效果十分有 ...

  3. 数据挖掘--“聚类”详解、K-means、K-平均值算法、K均值算法

    一. 什么是聚类 二. 聚类步骤 三. 聚类算法有哪些 1 层次聚类算法 2 划分聚类算法 3 基于密度的聚类算法 4 基于网格的聚类算法 5 基于模型的聚类算法 一. 什么是聚类? 物以类聚,人以群 ...

  4. 机器学习中你不可不知的几个算法常识

    机器学习中你不可不知的几个算法常识 https://mp.weixin.qq.com/s/Fh-eQm41DI3rkKjEgC1Yig 本文是<机器学习宝典>第 2 篇,读完本文你能够掌握 ...

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

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

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

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

  7. KNN算法(K临近算法)及使用KNN算法实现手写数字0-9识别

    首先感谢博主倔强的小彬雅,本文使用的素材及部分代码来源其博文机器学习入门-用KNN实现手写数字图片识别(包含自己图片转化),需要下载素材的可以到其博文最后进行下载. 关于KNN算法 knn算法也叫K临 ...

  8. 机器学习中的聚类算法

    1. 概述 根据所拥有的数据,可以使用三种不同的机器学习方法,包括监督学习.半监督学习和无监督学习. 在监督学习中,根据已标记数据,因此可以确定输出是关于输入的某种(隐函数)的正确值.通过半监督学习, ...

  9. 关于机器学习中山峰聚类算法的说明

    前言 在之前关于聚类算法的文章中,笔者主要涉及的内容均是和参数求解相关的,如C均值(包括模糊C均值).混合高斯模型等,而对于一些无参数密度估计的算法尚未讨论,而且一般基于参数密度估计的算法均是建立在假 ...

最新文章

  1. MYSQL启用日志,查看日志,利用mysqlbinlog工具恢复MySQL数据库
  2. Liunx 查看硬件信息
  3. spring_Spring Boot应用程序浪费了内存
  4. IDEA打开vue项目,每次打开的都是上一次的vue项目,即同一个vue项目,解决方法
  5. 关于优酷开放SDK相应的mediaplayer的监听器的设置之setOnBufferingUpdateListener
  6. 欢迎您参加_ADT技术培训营
  7. python编写统计选票的程序_使用python编写微信公众号发稿统计程序
  8. [html] label都有哪些作用?并举相应的例子说明
  9. union c语言大小,Union declaration(联合体声明)
  10. 疯狂挂载:Linux连接常用外部设备的方法
  11. jQuery - Ajax解决跨域问题
  12. linux是发展历史,linux发展历史.doc.doc
  13. 用pathon实现计算器功能
  14. 广西(柳州)创建国家级车联网先导区建设方案
  15. 前端开发对JSESSIONID的初步了解:JSESSIONID的产生以及简单说明
  16. nginx常用配置模板
  17. Centos7系统安全漏洞及修复方案
  18. (读后摘抄)《计算机程序设计语言的发展》_王汝传
  19. 【解决】grafana密码出现错误无法登录,强制进行密码修改
  20. 让米帝领事馆给你报空气质量(动态网页爬取及简单的数据整理)

热门文章

  1. 2021年大数据Flink(十六):流批一体API Connectors ​​​​​​​​​​​​​​Redis
  2. 【其他】将幕布文章OPML转换为Markdown的方法
  3. c++ 类的定义与使用
  4. Android 白天/夜间模式切换
  5. Python Day26:多态、封装、内置函数:__str__、__del__、反射(反省)、动态导入模块...
  6. 使用hibernate与mysql时数据不能插入的原因及解决办法
  7. lambda表达式树
  8. C++ 笔记(19)— 标准模板库(STL容器、STL迭代器、STL算法、STL容器特点、STL字符串类)
  9. 视频 网站 页面开关灯实现方法
  10. How to set window title name on Oracle EBS Form?