[聚类算法] K-means 算法
聚类 和 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 算法的更多相关文章
- 第4章 最基础的分类算法-k近邻算法
思想极度简单 应用数学知识少 效果好(缺点?) 可以解释机器学习算法使用过程中的很多细节问题 更完整的刻画机器学习应用的流程 distances = [] for x_train in X_train ...
- 聚类算法:K-means 算法(k均值算法)
k-means算法: 第一步:选$K$个初始聚类中心,$z_1(1),z_2(1),\cdots,z_k(1)$,其中括号内的序号为寻找聚类中心的迭代运算的次序号. 聚类中心的向量值可任意设 ...
- 分类算法----k近邻算法
K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的 ...
- 机器学习(四) 机器学习(四) 分类算法--K近邻算法 KNN (下)
六.网格搜索与 K 邻近算法中更多的超参数 七.数据归一化 Feature Scaling 解决方案:将所有的数据映射到同一尺度 八.scikit-learn 中的 Scaler preprocess ...
- 机器学习(四) 分类算法--K近邻算法 KNN (上)
一.K近邻算法基础 KNN------- K近邻算法--------K-Nearest Neighbors 思想极度简单 应用数学知识少 (近乎为零) 效果好(缺点?) 可以解释机器学习算法使用过程中 ...
- python 机器学习(二)分类算法-k近邻算法
一.什么是K近邻算法? 定义: 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别. 来源: KNN算法最早是由Cover和Hart提 ...
- KNN 与 K - Means 算法比较
KNN K-Means 1.分类算法 聚类算法 2.监督学习 非监督学习 3.数据类型:喂给它的数据集是带label的数据,已经是完全正确的数据 喂给它的数据集是无label的数据,是杂乱无章的,经过 ...
- 【机器学习】聚类算法——K均值算法(k-means)
一.聚类 1.基于划分的聚类:k-means.k-medoids(每个类别找一个样本来代表).Clarans 2.基于层次的聚类:(1)自底向上的凝聚方法,比如Agnes (2)自上而下的分裂方法,比 ...
- 分类算法——k最近邻算法(Python实现)(文末附工程源代码)
kNN算法原理 k最近邻(k-Nearest Neighbor)算法是比较简单的机器学习算法.它采用测量不同特征值之间的距离方法进行分类,思想很简单:如果一个样本在特征空间中的k个最近邻(最相似)的样 ...
- 【学习笔记】分类算法-k近邻算法
k-近邻算法采用测量不同特征值之间的距离来进行分类. 优点:精度高.对异常值不敏感.无数据输入假定 缺点:计算复杂度高.空间复杂度高 使用数据范围:数值型和标称型 用例子来理解k-近邻算法 电影可以按 ...
随机推荐
- 从零开始使用Jenkins来构建Docker容器(Ubuntu 14.04)
当开发更新了代码,提交到Gitlab上,然后由测试人员触发Jenkins,于是一个应用的新版本就被构建了.听起来貌似很简单,duang~duang~duang,我用了是这样,你们用了也是这样,看起来这 ...
- BZOJ 1251: 序列终结者
1251: 序列终结者 Time Limit: 20 Sec Memory Limit: 162 MB Submit: 3773 Solved: 1579 [Submit][Status][Dis ...
- [py]shell着色
print "\033[32;1myou are 30 older and little than 40\033[0m"
- Caffe学习系列(3):视觉层(Vision Layers)及参数
所有的层都具有的参数,如name, type, bottom, top和transform_param请参看我的前一篇文章:Caffe学习系列(2):数据层及参数 本文只讲解视觉层(Vision La ...
- 又发现个.net framework的坑
请找出这两个方法的区别: http://msdn.microsoft.com/en-us/library/ms584187(v=vs.110).aspx
- [POJ3696]The Luckiest number(数论)
题目:http://poj.org/problem?id=3696 题意:给你一个数字L,你要求出一个数N,使得N是L的倍数,且N的每位数都必须是8,输出N的位数(如果不存在输出0) 分析: 首先我们 ...
- 详解C语言的htons和htonl函数、大尾端、小尾端
在Linux和Windows网络编程时需要用到htons和htonl函数,用来将主机字节顺序转换为网络字节顺序. 在Intel机器下,执行以下程序 int main(){ printf(" ...
- C#实现每隔一段时间执行代码(多线程)
总结以下三种方法,实现c#每隔一段时间执行代码: 方法一:调用线程执行方法,在方法中实现死循环,每个循环Sleep设定时间: 方法二:使用System.Timers.Timer类: 方法三:使用Sys ...
- Pearson(皮尔逊)相关系数及MATLAB实现
转自:http://blog.csdn.net/wsywl/article/details/5727327 由于使用的统计相关系数比较频繁,所以这里就利用几篇文章简单介绍一下这些系数. 相关系数:考察 ...
- 论文笔记Outline
1.Information publication: author: 2.What 3.Dataset 4.How input: output: method: 5.Evaluation: basel ...