一、聚类

1.基于划分的聚类:k-means、k-medoids(每个类别找一个样本来代表)、Clarans

2.基于层次的聚类:(1)自底向上的凝聚方法,比如Agnes

(2)自上而下的分裂方法,比如Diana

3.基于密度的聚类:Obsacn、Optics、Birch(CF-Tree)、Cure

4.基于网格的方法:Sting、WaveCluster

5.基于模型的聚类:EM、SOM、Cobweb

二、k-means算法

流程伪代码:

************************************************************

创建k个点作为起始质心(通常是随机选择)

当任意一个点的簇分配结果发生改变时

对数据集里每个数据点

对每个质心

计算每个质心与数据点之间的距离

将数据点分配到与其最近的簇

对每个簇,计算簇中所有点的均值并将均值作为质心

************************************************************

k-means是使下式最小:

三、性能

优点:

1.容易实现,简单快速

2.对于大数据集,该算法是相对可伸缩且高效率的,复杂度大约是O(nkt),其中n为所有对象数目,k是簇的数目,t是迭代次数(通常k<<n)

3.算法尝试找出使平方误差函数值最小的k个划分,当簇是密集的、球状或团状的,且簇与簇之间区别明显时,聚类效果较好

缺点:

1.容易局部收敛,大规模数据集上收敛较慢

2.k-means只能在簇的平均值被定义的情况下才能使用,且对有些分类属性的数据不适合

3.对初值敏感,不同初值可能有不同聚类结果

4.不适合发现非凸面形状的簇,或者大小差别很大的簇

5.对于噪声孤立点数据敏感,少量的该类数据能对平均值产生极大影响

四、k-means如何确定k值

如何确定k值、初始聚类中心? -----(详见各种论文,对此讨论很多。。。)

初始聚类中心的选取:

直方图法:根据样本空间自身特征进行区域划分

粒子群算法:迭代

【机器学习】聚类算法——K均值算法(k-means)的更多相关文章

  1. 机器学习之K均值算法(K-means)聚类

    K均值算法(K-means)聚类 [关键词]K个种子,均值 一.K-means算法原理 聚类的概念:一种无监督的学习,事先不知道类别,自动将相似的对象归到同一个簇中. K-Means算法是一种聚类分析 ...

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

    k-means算法:      第一步:选$K$个初始聚类中心,$z_1(1),z_2(1),\cdots,z_k(1)$,其中括号内的序号为寻找聚类中心的迭代运算的次序号. 聚类中心的向量值可任意设 ...

  3. 聚类--K均值算法:自主实现与sklearn.cluster.KMeans调用

    1.用python实现K均值算法 import numpy as np x = np.random.randint(1,100,20)#产生的20个一到一百的随机整数 y = np.zeros(20) ...

  4. 【机器学习】K均值算法(I)

    K均值算法是一类非监督学习类,其可以通过观察样本的离散性来对样本进行分类. 例如,在对如下图所示的样本中进行聚类,则执行如下步骤 1:随机选取3个点作为聚类中心. 2:簇分配:遍历所有样本然后依据每个 ...

  5. 机器学习算法之Kmeans算法(K均值算法)

    Kmeans算法(K均值算法) KMeans算法是典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大.该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑 ...

  6. 使用K均值算法进行图片压缩

    K均值算法   上一期介绍了机器学习中的监督式学习,并用了离散回归与神经网络模型算法来解决手写数字的识别问题.今天我们介绍一种机器学习中的非监督式学习算法--K均值算法.   所谓非监督式学习,是一种 ...

  7. K 均值算法-如何让数据自动分组

    公号:码农充电站pro 主页:https://codeshellme.github.io 之前介绍到的一些机器学习算法都是监督学习算法.所谓监督学习,就是既有特征数据,又有目标数据. 而本篇文章要介绍 ...

  8. 一句话总结K均值算法

    一句话总结K均值算法 核心:把样本分配到离它最近的类中心所属的类,类中心由属于这个类的所有样本确定. k均值算法是一种无监督的聚类算法.算法将每个样本分配到离它最近的那个类中心所代表的类,而类中心的确 ...

  9. Bisecting KMeans (二分K均值)算法讲解及实现

    算法原理 由于传统的KMeans算法的聚类结果易受到初始聚类中心点选择的影响,因此在传统的KMeans算法的基础上进行算法改进,对初始中心点选取比较严格,各中心点的距离较远,这就避免了初始聚类中心会选 ...

  10. KMeans (K均值)算法讲解及实现

    算法原理 KMeans算法是典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大.该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标 ...

随机推荐

  1. POJ2253 frogger 最短路 floyd

    #include<iostream>#include<algorithm>#include<stdio.h>#include<string.h>#inc ...

  2. 《python基础教程(第二版)》学习笔记 列表/元组(第2章)

    <python基础教程(第二版)>学习笔记 列表/元组(第2章)序列中的下标从0开始x='ABC' ==> x[0]='A', x[1]='B', x[2]='C'负数索引从右边开始 ...

  3. UOJ279 【UTR #2】题目交流通道

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000  作者博客:http://www.cnblogs.com/ljh2000-jump ...

  4. PHP中include路径的解决方法汇总

    这几天整理一份很乱的代码,这才意识到php对include处理不是一般的贱:别的编程语言在处理include中的相对目录时,都是以当前处理的文件作为基准.也就是说,如果A包含B,B包含C时,C再包含一 ...

  5. 修改myEclipse2014web项目名称

    重命名项目名称后 右键点击你的项目,然后选择属性---->然后点击myeclipse—>Project Facets—> web 选项,修改web context-root名称为你要 ...

  6. Delphi - 数组和结构体

    技术交流,DH讲解. 记得很早之前我就说过,数组和结构体在内存中其实一样的,他们都是连续分布的.例如: ? 1 2 3 4 TMyStruct = record   A,B,C:Integer; en ...

  7. php 数组分页

    $p = max(1, I('param.p',1,'intval')); $count = count($date); $Page = new Page($count,15); $Page-> ...

  8. RadioButton控件选中、取消

    js: var flag = true; function chkRadio(id) { id.checked = flag; flag = !flag; } aspx.cs: this.rbtKey ...

  9. Hibernate学习---第十一节:Hibernate之数据抓取策略&批量抓取

    1.hibernate 也可以通过标准的 SQL 进行查询 (1).将SQL查询写在 java 代码中 /** * 查询所有 */ @Test public void testQuery(){ // ...

  10. Sharepoint list webpart

    <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.0.min.js&qu ...