机器学习算法-KMeans聚类算法解析及伪代码实现。

徐小狗在文末附上了几条大神们关于KMeans聚类算法的博文,欲详细研究请前往浏览~

作为初学者,许多地方可能笨拙或有误,希望有大神看到后给予优化和指点!~

Why - KMeans:现实中的聚类分析问题 - 总统大选

假设 M 国又开始全民选举总统了,目前 Mr.OBM 的投票率为48%(投票数占所有选民人数的百分比),而 Mr.MKN 的为47%,而剩下的一部分出于【种种原因】没有投票。

做为其中某个阵营的人,自然是希望能够尽可能的争取到这些剩余的票 -因为这完全可能影响最终选举结果。

然而,你不可能争取到这些人的所有投票,因为你满足某个群体的人,也许就伤害到了另一群人的利益。

一个很不错的想法是将这些人分为 K 个群体,然后主要对其中人数最多的几个群体做工作。

这就需要使用到聚类的策略了。

聚类策略是搜集剩余选民的用户信息(各种满意/不满意的信息),将这些信息输入进聚类算法,然后对聚类结果中人数最多的簇的选民做思想工作。

可能你会发现某个簇的选民都是一个社区的,一个宗教信仰的,或者具有某些共性。这样就方便各种各样的拉票活动了。

What - KMeans聚类算法:

聚类:给事物打标签,寻找同一组内的个体之间的一些潜在的相似模式,力图找到数据的自然分组。

聚类是一种无监督的机器学习任务,它可以自动将数据划分成类。
 因此聚类分组不需要提前被告知组应该是什么样的(比如总统大选的例子),因为我们甚至都不知道我们在寻找什么,所以聚类是应用于知识探索而不是预测。
 KMeans聚类算法思想:以空间中K个点为中心进行聚类,对最靠近他们的对象归类,通过迭代,逐次更新各聚类中心的值,直到最好的聚类结果。

How - KMeans聚类算法:

KMeans聚类算法流程:

 

KMeans聚类算法缺点:

1.初始选择中心点的位置是随机的,不同的随机初始中心点会有不同的迭代次数,有时候会计算很多次,而且结果也会不同;

2.KMeans需要人为的确定初始聚类中心,不同的初始聚类中心可能导致完全不同的聚类结果;

3.聚类中心的个数K需要事先给定,但在实际中这个K值的选定是非常难以估计的,很多时候,事先并不知道给定的数据集应该分成多少个类别才合适;

KMeans聚类算法优化:KMenas++算法

KMeans++算法思想:

1.假设分为K类;

2.从输入的数据点集合中随机选择一个点作为第一个聚类中心;

3.对于数据集中的每一个点x,计算其与最近的聚类中心(指已选择的聚类中心)的距离D(x);

4.选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点被选取为聚类中心的概率较大;

5.重复3和4两个步骤直到K个聚类中心被选出来;

6.利用这K个初始的聚类中心运行标准的K-Means算法;

简单来说就是选择中心点时各中心点的距离要做到尽可能的远。

KMeans聚类算法伪代码实现:

简单的伪代码实现:

选择K个点作为初始质心
repeat  将每个点指派到最近的质心,形成K个簇  重新计算每个簇的质心
until 簇不发生变化或达到最大迭代次数  

详细的伪代码实现:

创建 k 个点作为起始质心 (随机选择):当任意一个点的簇分配结果发生改变的时候:对数据集中的每个数据点:对每个质心:计算质心与数据点之间的距离将数据点分配到距其最近的簇对每一个簇:求出均值并将其更新为质心

大神的KMeans剖析博文分享:

大神-穆晨: 第十三篇:K-Means 聚类算法原理分析与代码实现。

大神-yqtaowhu:深入理解K-Means聚类算法。

机器学习算法-KMeans聚类算法解析及伪代码实现。相关推荐

  1. 机器学习算法-k-means聚类算法介绍

    聚类算法介绍: 在"无监督学习"(unsupervised learning)中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的 ...

  2. 机器学习:k-means聚类算法+算法优化

    第六章:机器学习course02:k-means聚类算法 标签(空格分隔): 10-机器学习 $---by:Rianusr$ ##1 课题导入 ###1.1 k-means常见的应用场景 ![imag ...

  3. 【机器学习】—— K-means聚类算法原理详解 以及 二维、三维数据的K-means聚类Python实现

    文章目录 一.K-Means聚类算法原理过程 1.1 K-means聚类的一些细节 1.1.1 样本x(i)x^{(i)}x(i)与中心点μkμ_kμk​距离的衡量 1.1.2 K-means聚类算法 ...

  4. (学习笔记)十大经典算法——K-means聚类算法

    概述 聚类算法是在无监督的情况下将对象自动分组的一种分析方法,典型的聚类算法分为三个阶段:特征选择和特征提取,数据对象间相似度计算,根据相似度将数据对象分组.聚类算法的目标是将数据集合分成若干簇,使得 ...

  5. matlab中的聚类算法,kmeans聚类算法matlab matlab 聚类算法silhouette

    怎样用matlab实现多维K-means聚类算法小编觉得一个好的周末应该是这样的:睡到中午醒来,在床上躺着玩两个小时手机,起床随便吃点东西,下午去超市买一大堆零食,五六点的时候去约小伙伴们吃火锅烧烤, ...

  6. 机器学习之KMeans聚类算法原理(附案例实战)

    14天阅读挑战赛 KMeans聚类  什么是聚类任务 1 无监督机器学习的一种 2 目标将已有数据根据相似度划分到不同的簇 3 簇内样本彼此之间越相似,不同簇的样本之间越不相似,就越好 为什么叫KMe ...

  7. 机器学习 day7 kmeans 聚类算法

    #准确的客户分类的结果是企业优化营销资源的重要依据,本文利用了航空公司的部分数据,利用Kmeans聚类方法,对航空公司的客户进行了分类,来识别出不同的客户群体,从来发现有用的客户,从而对不同价值的客户 ...

  8. 大数据进阶之算法——KMeans聚类算法

    首先说一下分类和聚类的区别: 分类: 分类其实就是从特定的数据中挖掘模式,做出相对应的判断.例如对班级的学生进性性别的分类,我事先已经知道只有男性和女性两个分类. 聚类: 聚类的目的也是将数据分类,但 ...

  9. python kmeans聚类_python机器学习之k-means聚类算法(1)

    k-means算法是一种无监督的机器学习算法,虽然是机器学习,但它简单易于实现.本篇采用python语言,自主编程实现k-menas算法,当然python用专门的库函数来实现该算法,但本次主要使用该算 ...

最新文章

  1. 4. SQL Server数据库状态监控 - 作业状态
  2. 二倍图(精灵图的用法)
  3. JSP页面如何调用自己写的.class文件
  4. Web Bundles 学习笔记
  5. java soap 头_如何在Java中添加Soap标头
  6. 飞鸽传书写每行都认认真真
  7. centos安装apache_实战Linux部署Apache
  8. Tornado框架的初步使用
  9. 什么是:before和:after?
  10. 51单片机汇编学习笔记1——内部结构
  11. pyltp实体识别_基于pyltp进行命名实体识别
  12. 使用单文档视图结构把Word嵌入到VC程序中(转)
  13. Java 发送QQ邮件
  14. android自定义url协议,Android平台设置UrlSchemes,实现被第三方应用调用
  15. 受汉城改名鼓舞,世界各地掀起改名热潮,尤其是那个小日本(笑话)
  16. 达观数据智能财务审核机器人,助力央企财务共享中心智能转型
  17. Dbg2Excel_Word
  18. hive之beeline连接与操作
  19. 新南威尔士大学预科学生宿舍
  20. Pr 中英文版本切换批处理文件

热门文章

  1. ios中用AFN做https
  2. 1658 页的《Java 面试突击核心讲》在牛客网火了,完整版 PDF 开放下载!
  3. 【3D视觉原理】2-3D传感器原理
  4. Rabbitmq小书
  5. 地理空间数据共享资源大汇总
  6. 机器学习(三)线性回归、广义线性回归、非线性回归
  7. python代码怎么写(一)
  8. 物联网入门教程【下】
  9. tensorflow之tf.tensordot详解
  10. python字符串equals方法_equals方法和 == 的使用