聚类 和 k-means简单概括。

  • 聚类是一种 无监督学习 问题,它的目标就是基于 相似度 将相似的子集聚合在一起。
  • k-means算法是聚类分析中使用最广泛的算法之一。它把n个对象根据它们的属性分为k个聚类,以便使得所获得的聚类满足:

同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。

k - means的算法原理:

(文/qinm08(简书作者) 原文链接:http://www.jianshu.com/p/32e895a940a2)

使用K-Means算法进行聚类,过程非常直观:
(a) 给定集合D,有n个样本点
(b) 随机指定两个点,作为两个子集的质心
(c) 根据样本点与两个质心的距离远近,将每个样本点划归最近质心所在的子集
(d) 对两个子集重新计算质心
(e) 根据新的质心,重复操作(c)
(f) 重复操作(d)和(e),直至结果足够收敛或者不再变化

Python demo:

from sklearn.cluster import KMeans

model=KMeans(n_clusters=4,random_state=0)
X=[
[50.0,50.0,9.0]
,[28.0, 9.0,4.0]
,[17.0,15.0,3.0]
,[25.0,40.0,5.0]
,[28.0,40.0,2.0]
,[50.0,50.0,1.0]
,[50.0,40.0,9.0]
,[50.0,40.0,9.0]
,[40.0,40.0,5.0]
,[50.0,50.0,9.0]
,[50.0,50.0,5.0]
,[50.0,50.0,9.0]
,[40.0,40.0,9.0]
,[40.0,32.0,17.0]
,[50.0,50.0,9.0]
] model.fit(X) for a in X:
print(model.predict(a),a)

结果:

(array([1]), [50.0, 50.0, 9.0])
(array([2]), [28.0, 9.0, 4.0])
(array([2]), [17.0, 15.0, 3.0])
(array([3]), [25.0, 40.0, 5.0])
(array([3]), [28.0, 40.0, 2.0])
(array([1]), [50.0, 50.0, 1.0])
(array([0]), [50.0, 40.0, 9.0])
(array([0]), [50.0, 40.0, 9.0])
(array([0]), [40.0, 40.0, 5.0])
(array([1]), [50.0, 50.0, 9.0])
(array([1]), [50.0, 50.0, 5.0])
(array([1]), [50.0, 50.0, 9.0])
(array([0]), [40.0, 40.0, 9.0])
(array([0]), [40.0, 32.0, 17.0])
(array([1]), [50.0, 50.0, 9.0])

两个缺点:
1)初始聚类中心的个数需要事先给定,一般非常困难
2)初始聚类中心的选取很随机,可能导致非常不同的聚类效果

K-means++算法:

改进了2)初始聚类中心的选取
(a)从数据集中随机选择一个点,作为第一个中心C1
(b)计算所有点到离它最近的中心的距离D(x),然后在此中心根据概率原则选择距离“比较大”的点作为下一个中心点。
SUM(D(x))*random(0,1)>SUM(D(xi) && SUM(D(x))*random(0,1)<SUM(D(xi-1)
(c)重复操作(b)直到找到k个中心点

缺点:
k个中心点,互相依赖,即内在的有序性。

[聚类算法] K-means 算法的更多相关文章

  1. 第4章 最基础的分类算法-k近邻算法

    思想极度简单 应用数学知识少 效果好(缺点?) 可以解释机器学习算法使用过程中的很多细节问题 更完整的刻画机器学习应用的流程 distances = [] for x_train in X_train ...

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

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

  3. 分类算法----k近邻算法

    K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的 ...

  4. 机器学习(四) 机器学习(四) 分类算法--K近邻算法 KNN (下)

    六.网格搜索与 K 邻近算法中更多的超参数 七.数据归一化 Feature Scaling 解决方案:将所有的数据映射到同一尺度 八.scikit-learn 中的 Scaler preprocess ...

  5. 机器学习(四) 分类算法--K近邻算法 KNN (上)

    一.K近邻算法基础 KNN------- K近邻算法--------K-Nearest Neighbors 思想极度简单 应用数学知识少 (近乎为零) 效果好(缺点?) 可以解释机器学习算法使用过程中 ...

  6. python 机器学习(二)分类算法-k近邻算法

      一.什么是K近邻算法? 定义: 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别. 来源: KNN算法最早是由Cover和Hart提 ...

  7. KNN 与 K - Means 算法比较

    KNN K-Means 1.分类算法 聚类算法 2.监督学习 非监督学习 3.数据类型:喂给它的数据集是带label的数据,已经是完全正确的数据 喂给它的数据集是无label的数据,是杂乱无章的,经过 ...

  8. 【机器学习】聚类算法——K均值算法(k-means)

    一.聚类 1.基于划分的聚类:k-means.k-medoids(每个类别找一个样本来代表).Clarans 2.基于层次的聚类:(1)自底向上的凝聚方法,比如Agnes (2)自上而下的分裂方法,比 ...

  9. 分类算法——k最近邻算法(Python实现)(文末附工程源代码)

    kNN算法原理 k最近邻(k-Nearest Neighbor)算法是比较简单的机器学习算法.它采用测量不同特征值之间的距离方法进行分类,思想很简单:如果一个样本在特征空间中的k个最近邻(最相似)的样 ...

  10. 【学习笔记】分类算法-k近邻算法

    k-近邻算法采用测量不同特征值之间的距离来进行分类. 优点:精度高.对异常值不敏感.无数据输入假定 缺点:计算复杂度高.空间复杂度高 使用数据范围:数值型和标称型 用例子来理解k-近邻算法 电影可以按 ...

随机推荐

  1. 从零开始使用Jenkins来构建Docker容器(Ubuntu 14.04)

    当开发更新了代码,提交到Gitlab上,然后由测试人员触发Jenkins,于是一个应用的新版本就被构建了.听起来貌似很简单,duang~duang~duang,我用了是这样,你们用了也是这样,看起来这 ...

  2. BZOJ 1251: 序列终结者

    1251: 序列终结者 Time Limit: 20 Sec  Memory Limit: 162 MB Submit: 3773  Solved: 1579 [Submit][Status][Dis ...

  3. [py]shell着色

    print "\033[32;1myou are 30 older and little than 40\033[0m"

  4. Caffe学习系列(3):视觉层(Vision Layers)及参数

    所有的层都具有的参数,如name, type, bottom, top和transform_param请参看我的前一篇文章:Caffe学习系列(2):数据层及参数 本文只讲解视觉层(Vision La ...

  5. 又发现个.net framework的坑

    请找出这两个方法的区别: http://msdn.microsoft.com/en-us/library/ms584187(v=vs.110).aspx

  6. [POJ3696]The Luckiest number(数论)

    题目:http://poj.org/problem?id=3696 题意:给你一个数字L,你要求出一个数N,使得N是L的倍数,且N的每位数都必须是8,输出N的位数(如果不存在输出0) 分析: 首先我们 ...

  7. 详解C语言的htons和htonl函数、大尾端、小尾端

    在Linux和Windows网络编程时需要用到htons和htonl函数,用来将主机字节顺序转换为网络字节顺序. 在Intel机器下,执行以下程序 int main(){   printf(" ...

  8. C#实现每隔一段时间执行代码(多线程)

    总结以下三种方法,实现c#每隔一段时间执行代码: 方法一:调用线程执行方法,在方法中实现死循环,每个循环Sleep设定时间: 方法二:使用System.Timers.Timer类: 方法三:使用Sys ...

  9. Pearson(皮尔逊)相关系数及MATLAB实现

    转自:http://blog.csdn.net/wsywl/article/details/5727327 由于使用的统计相关系数比较频繁,所以这里就利用几篇文章简单介绍一下这些系数. 相关系数:考察 ...

  10. 论文笔记Outline

    1.Information publication: author: 2.What 3.Dataset 4.How input: output: method: 5.Evaluation: basel ...