K-means聚类
聚类算法,无监督学习的范畴,没有明确的类别信息。
给定n个训练样本{x1,x2,x3,...,xn}
kmeans算法过程描述如下所示:
1.创建k个点作为起始质心点,c1,c2,...,ck
2.重复以下过程直到收敛 遍历所有样本xi
遍历所有质心cj
记录质心与样本间的距离
将样本分配到距离其最近的质心
对每一个类,计算所有样本的均值并将其作为新的质心
下图展示了对n个样本点进行K-means聚类的效果,这里k取2。

需要注意的几点:
k个点怎么取
1.选择距离尽可能远的k个点
首先随机选一个点p1作为第一个簇的质心,然后选距离这个点p1最远的点p2作为第二个簇的质心,
再选择距离前面p1和p2最短距离的最大值的点作为第三个簇的质心。max(min(d(p1),d(p2)))
以此类推,选k个点。
2.选用层次聚类或者Canopy算法先进行初始聚类,利用这些类簇的中心点作为Kmeans初始类簇的质心
要求:样本相对较小,例如数百到数千(层次聚类开销较大);K相对于样本大小较小
k值怎么确定
ps:每个类称为簇,则簇的直径:簇内任意两点间的最大距离,簇的半径:簇内点到簇质心的最大距离
给定一个合适的簇指标,可以是簇平均半径、簇平均直径、或者平均质心距离的加权平均值(权重可以为簇内点的个数)
分别取k值在1,2,4,8,16....
基本会符合下图,当簇个数低于真实个数时,簇指标会随簇个数的增长快速下降,当簇个数高于真实个数时,簇指标会趋于平稳
找到图中所示转折点,先确定k的大致范围,再通过二分查找确定k的值

算法停止条件
1.规定一个迭代次数,达到即停止
2.目标函数收敛

求上述目标函数的最小值
参考:http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006910.html
K-means聚类的更多相关文章
- ML: 聚类算法-K均值聚类
基于划分方法聚类算法R包: K-均值聚类(K-means) stats::kmeans().fpc::kmeansruns() K-中心点聚类(K-Medoids) ...
- 【转】算法杂货铺——k均值聚类(K-means)
k均值聚类(K-means) 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时 ...
- 5-Spark高级数据分析-第五章 基于K均值聚类的网络流量异常检测
据我们所知,有‘已知的已知’,有些事,我们知道我们知道:我们也知道,有 ‘已知的未知’,也就是说,有些事,我们现在知道我们不知道.但是,同样存在‘不知的不知’——有些事,我们不知道我们不知道. 上一章 ...
- 机器学习实战5:k-means聚类:二分k均值聚类+地理位置聚簇实例
k-均值聚类是非监督学习的一种,输入必须指定聚簇中心个数k.k均值是基于相似度的聚类,为没有标签的一簇实例分为一类. 一 经典的k-均值聚类 思路: 1 随机创建k个质心(k必须指定,二维的很容易确定 ...
- Python实现kMeans(k均值聚类)
Python实现kMeans(k均值聚类) 运行环境 Pyhton3 numpy(科学计算包) matplotlib(画图所需,不画图可不必) 计算过程 st=>start: 开始 e=> ...
- 机器学习理论与实战(十)K均值聚类和二分K均值聚类
接下来就要说下无监督机器学习方法,所谓无监督机器学习前面也说过,就是没有标签的情况,对样本数据进行聚类分析.关联性分析等.主要包括K均值聚类(K-means clustering)和关联分析,这两大类 ...
- R与数据分析旧笔记(十五) 基于有代表性的点的技术:K中心聚类法
基于有代表性的点的技术:K中心聚类法 基于有代表性的点的技术:K中心聚类法 算法步骤 随机选择k个点作为"中心点" 计算剩余的点到这个k中心点的距离,每个点被分配到最近的中心点组成 ...
- 第十篇:K均值聚类(KMeans)
前言 本文讲解如何使用R语言进行 KMeans 均值聚类分析,并以一个关于人口出生率死亡率的实例演示具体分析步骤. 聚类分析总体流程 1. 载入并了解数据集:2. 调用聚类函数进行聚类:3. 查看聚类 ...
- K均值聚类的失效性分析
K均值聚类是一种应用广泛的聚类技术,特别是它不依赖于任何对数据所做的假设,比如说,给定一个数据集合及对应的类数目,就可以运用K均值方法,通过最小化均方误差,来进行聚类分析. 因此,K均值实际上是一个最 ...
- 机器学习算法与Python实践之(五)k均值聚类(k-means)
机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...
随机推荐
- Android USB安全调试
Android 4.2.2 引入了USB安全调试方面的内容,当启用安全调试的时候,只有被用户认证过的主机才可以通过Android SDK自带的ADB工具经由USB连接来访问设备的内部构件. 下面以an ...
- 暴力求解——除法 Division,UVa 725
Description Write a program that finds and displays all pairs of 5-digit numbers that between them u ...
- Nodejs in Visual Studio Code 07.学习Oracle
1.开始 Node.js:https://nodejs.org OracleDB: https://github.com/oracle/node-oracledb/blob/master/INSTAL ...
- UVALive 5983 MAGRID
题意:在一个n*m的网格上,从(0,0)走到(n-1,m-1),每次只能向右或者向下走一格.一个人最初有一个生命值x,走到每一个格生命值会变为x + s[i][j],(s[i][j]可为负,0,正), ...
- MVC 文件上传
项目需要,做一个图片上传的功能,本来是很简单,但是需要同时上传多个文件,并分条带一些额外的信息,听上去很复杂,通过下面图就可以一目了然: 网上找过一些方法,但多为不支持图片与其他信息关联,或者分两次上 ...
- OpenReports操作指南
最近要玩OpenReports,但在网上找了一圈,能用的资料少得可怜,所以把最近使用下来,积累的一些技巧记录下来(有部分整合了网上的资源). 备注:以下操作说明基于已做汉化的项目(汉化方案请参考:ht ...
- system2之:4-文件系统管理(上)
文件系统 一.文件系统的作用 管理文件和目录的一套机制 1.文件存取 2.文件的查找 3.文件的大小.文件的多少. 4.一个目录可以存放多少个文件 5.文件的命名 6.一个分区可以多大 等 ...
- 系统自带.net版本
首先我们可以参照下面的图来得到各Windows系统包括server版的自带.NET Framework的信息,下图只列出了.NET Framework 2.0及其之后的版本. Which Versio ...
- 重新启动linux上的tomcat
1.进入tomcat安装文件夹 2.cd bin 3../shutdown.sh 4../startup.sh
- C++之智能指针
导读 一直对智能指针有一种神秘的赶脚,虽然平时没怎么用上智能指针,也就看过STL中的其中一种智能指针auto_ptr,但是一直好奇智能指针的设计因此,今天看了一下<C++ Primer Plus ...