为什么说K-Means是基于距离的聚类算法?

K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,两个对象的距离越近,其相似度就越大。K-means算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。
k-means聚类,需要用户设定一个聚类个数k作为输入数据。k个初始类聚类中心点的选取,对聚类结果具有较大的。为了用k-means达到高质量的聚类,需要估计k值。可根据需要的聚类个数,估计k值。
比如一百万篇文章,如果平均500篇分为一类,k值可以取2000(1百万/500)。


算法步骤
1)随机选取任意k个对象作为初始聚类中心,初始代表一个簇;
2)计算点到质心的距离,并把它归到最近的质心的类;
3)重新计算已经得到的各个类的质心;
4)迭代2~3步直至新的质心与原质心相等或小于指定阈值,算法结束。
EM的典型
这种两步算法是最大期望算法(EM)的典型例子,第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;第二步是最大化(M),最大化在E 步上求得的最大似然值来计算参数的值。M 步上找到的参数估计值,被用于下一个E 步计算中,这个过程不断交替进行。


运行k-means聚类
K-mean聚类用到KMeansClusterer或KMeansDriver类,前一个是在内存(in-memory)里对节点聚类,后者采用MapReduce任务执行。
这两种方法可以:从盘上读取和写入数据,就像普通的Java程序。也可以通过分布式文件系统读写数据,在hadoop上执行聚类。先测试运行KMeansExample,使用一个随机点生成函数来创建一些点。这些点,生成向量格式的点,以正态分布出现,围绕着一个中心。可使用KMeansClusterer聚类方法,对这些点聚类。


k-means聚类输出的两类目录
clusters-*目录:在每一轮迭代末尾生成,clusters-0目录在第1轮迭代之后生成,clusters-1目录在第2轮迭代后生成,以此类推。包含了簇的信息:中心、标准差等。
clusteredPoints目录:包含了从簇ID到文档ID的最终映射。是根据最后一轮MapReduce操作的输出生成的。

原文地址:http://blog.51cto.com/tcit1987/2085379

时间: 2024-10-10 15:33:13

为什么说K-Means是基于距离的聚类算法?的相关文章

简单易学的机器学习算法——基于密度的聚类算法DBSCAN

一.基于密度的聚类算法的概述 最近在Science上的一篇基于密度的聚类算法<Clustering by fast search and find of density peaks>引起了大家的关注(在我的博文"论文中的机器学习算法--基于密度峰值的聚类算法"中也进行了中文的描述).于是我就想了解下基于密度的聚类算法,熟悉下基于密度的聚类算法与基于距离的聚类算法,如K-Means算法之间的区别. 基于密度的聚类算法主要的目标是寻找被低密度区域分离的高密度区域.与基于距离的聚

【机器学习】DBSCAN Algorithms基于密度的聚类算法

一.算法思想: DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个比较有代表性的基于密度的聚类算法.与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在噪声的空间数据库中发现任意形状的聚类. DBSCAN中的几个定义: Ε邻域:给定对象半径为Ε内的区域称为该对象的Ε邻域: 核心对象:如果给定对象Ε领域内的样本点数大于等于MinPts,则称该对象为核心对象:

机器学习经典算法详解及Python实现--聚类及K均值、二分K-均值聚类算法

摘要 聚类是一种无监督的学习(无监督学习不依赖预先定义的类或带类标记的训练实例),它将相似的对象归到同一个簇中,它是观察式学习,而非示例式的学习,有点像全自动分类.说白了,聚类(clustering)是完全可以按字面意思来理解的--将相同.相似.相近.相关的对象实例聚成一类的过程.机器学习中常见的聚类算法包括 k-Means算法.期望最大化算法(Expectation Maximization,EM,参考"EM算法原理").谱聚类算法(参考机器学习算法复习-谱聚类)以及人工神经网络算法

聚类分析之基于密度的聚类算法(DBSCAN)

一  什么是基于密度的聚类算法 由于层次聚类算法和划分式聚类算往往只能发现凸形的聚类簇.为了弥补这一缺陷,发现各种任意形状的聚类簇,开发出基于密度的聚类算法.这类算法认为,在整个样本空间点中,各目标类簇是由一群的稠密样本点组成的,而这些稠密样本点被低密度区域(噪声)分割,而算法的目的就是要过滤低密度区域,发现稠密样本点. 二  DBSCAN(Density-based Spatial Clustering of Applications with Noise) 是一种基于高密度联通区域的聚类算法

基于K-means Clustering聚类算法对电商商户进行级别划分(含Octave仿真)

在从事电商做频道运营时,每到关键时间节点,大促前,季度末等等,我们要做的一件事情就是品牌池打分,更新所有店铺的等级.例如,所以的商户分入SKA,KA,普通店铺,新店铺这4个级别,对于不同级别的商户,会给予不同程度的流量扶持或广告策略.通常来讲,在一定时间段内,评估的维度可以有:UV,收订金额,好评率,销退金额,广告位点击率,转化率,pc端流量.手机端流量.客单价......等n多个维度,那么如何在这n多个维度中找到一种算法,来将我们的品牌划分到4个级别中呢?今天所讨论的K-means聚类算法是其

20151014_基于距离的分类算法之KNN

1.原理 通过计算每个训练数据到待分类元组的距离,取和待分类元组距离最近的K个训练数据,K个数据中哪个类别的训练数据占多数,则待分类元组就属于哪个类别. 训练样本用n维数值属性描述.每个样本代表n维空间的一个点.所有的训练样本都放在n维模式空间中.给定一个样本,k-最临近分类法搜索模式空间,找出最接近未知样本的k个训练样本. 2.需要的信息 训练集 距离计算值 要获取的最邻近的邻居的数目k 计算两点之间的距离 例如可采用欧几里得距离:d = sqrt((x1-x2)^2+(y1-y2)^2+..

基于密度的聚类之Dbscan算法

一.算法概述 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个比较有代表性的基于密度的聚类算法.与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在噪声的空间数据库中发现任意形状的聚类(笔者认为是因为他不是基于距离的,基于距离的发现的是球状簇). 该算法利用基于密度的聚类的概念,即要求聚类空间中的一定区域内所包含对象(点或其他空间对象)的数目不小于某一给

聚类算法:K均值、凝聚层次聚类和DBSCAN

聚类分析就仅根据在数据中发现的描述对象及其关系的信息,将数据对象分组(簇).其目标是,组内的对象相互之间是相似的,而不同组中的对象是不同的.组内相似性越大,组间差别越大,聚类就越好. 先介绍下聚类的不同类型,通常有以下几种: (1)层次的与划分的:如果允许簇具有子簇,则我们得到一个层次聚类.层次聚类是嵌套簇的集族,组织成一棵树.划分聚类简单地将数据对象划分成不重叠的子集(簇),使得每个数据对象恰在一个子集中. (2)互斥的.重叠的与模糊的:互斥的指每个对象都指派到单个簇.重叠的或是模糊聚类用来反

k-均值聚类算法;二分k均值聚类算法

根据<机器学习实战>一书第十章学习k均值聚类算法和二分k均值聚类算法,自己把代码边敲边理解了一下,修正了一些原书中代码的细微差错.目前代码有时会出现如下4种报错信息,这有待继续探究和完善. 报错信息: Warning (from warnings module): File "F:\Python2.7.6\lib\site-packages\numpy\core\_methods.py", line 55 warnings.warn("Mean of empty