【算法】K-Means聚类算法(k-平均或k-均值)
1.聚类算法和分类算法的区别
a)分类
分类(Categorization or Classification)就是按照某种标准给对象贴标签(label),再根据标签来区分归类。
举例:
假如你有一堆动物的头像图片样本,想把它们进行分类,分成:猫,狗,鱼等。当在有新的动物图片进来之后,能够自动的识别出属于哪一类,这就是分类,而猫,狗,鱼等就是标签
b)聚类
聚类是指事先没有“标签”而通过某种成团分析找出事物之间存在聚集性原因的过程。聚类是在没有划分类别的情况下,根据数据相似度进行样本分组的一种方法。
与分类模型需要使用有类标记样本构成的训练数据不同,聚类模型可以建立在无类标记的数据上,是一种非监督的学习算法。
举例:
假如你有一堆数据样本,想把这些数据分类,但是你也不知道怎么分,你只知道要分3类,4类或者其他更多。这时候就等于是把一堆零散的样本聚成几类。
c)总结:分类和聚类最大的区别就是有无标签。
2.K-means属于聚类算法
假设你有X1——Xi个样本,想把它们分成Uk个中心
算法的步骤:
a).随机的选择U1---Uk个中心,用样本Xi去减分别减这个中心值,得到距离类别中心最近的类别,归为同一个簇。
b).将这个簇的中心值归为这个簇的所有样本的平均值,重新执行第一步。
c).不断进行迭代,也就是不断的执行a)和b)两步,直到类别中心小于某个阈值也就是终止条件。
这些终止条件可以是:1)迭代次数; 2)簇中心变化率 ;3)最小平方误差
3.注意事项:
a).K-means算法是初始敏感的
如下图:在初始选择簇类点时,对后面的聚类影响很大,下面初始选择4个红点作为簇类中心,结果就变成了右边这种情况了。并不是我们想要分成的四类

解决办法:聚类完之后计算一下簇的均方误差,如果某一个簇的均方误差特别大,就可以判断这个簇聚的不对,初值选的不行,把簇中心比较近的合成一类,重新再聚一遍
这种叫做二分K-Means聚类
b)异常点处理
K—Means算法是将簇中所有的均值作为质心,若簇中含有异常点,将导致均值偏离严重。
例如:当有一个数组:1,2,3,4,100的均值是22,显然距离大多数数据比较远
解决办法:该取中位数3为比较稳妥。这种取中位数的为簇中心的算法叫K-Mediods聚类
4.总结:
虽然有以下缺点:
a)不适合于发现非凸形状的簇或者大小差别很大的簇
b)对噪声和孤立点数据敏感
但是,K-Means聚类算法可以作为其他聚类算法的基础
【算法】K-Means聚类算法(k-平均或k-均值)的更多相关文章
- 数据挖掘十大算法--K-均值聚类算法
一.相异度计算 在正式讨论聚类前,我们要先弄清楚一个问题:怎样定量计算两个可比較元素间的相异度.用通俗的话说.相异度就是两个东西区别有多大.比如人类与章鱼的相异度明显大于人类与黑猩猩的相异度,这是能 ...
- 机器学习算法总结(五)——聚类算法(K-means,密度聚类,层次聚类)
本文介绍无监督学习算法,无监督学习是在样本的标签未知的情况下,根据样本的内在规律对样本进行分类,常见的无监督学习就是聚类算法. 在监督学习中我们常根据模型的误差来衡量模型的好坏,通过优化损失函数来改善 ...
- [聚类算法] K-means 算法
聚类 和 k-means简单概括. 聚类是一种 无监督学习 问题,它的目标就是基于 相似度 将相似的子集聚合在一起. k-means算法是聚类分析中使用最广泛的算法之一.它把n个对象根据它们的属性分为 ...
- mahout in Action2.2-聚类介绍-K-means聚类算法
聚类介绍 本章包含 1 实战操作了解聚类 2.了解相似性概念 3 使用mahout执行一个简单的聚类实例 4.用于聚类的各种不同的距离測算方法 作为人类,我们倾向于与志同道合的人合作-"鸟的 ...
- ISODATA聚类算法的matlab程序
ISODATA聚类算法的matlab程序 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 参考:Kmeans及ISODATA算法的matlab实现 算法 ...
- mean shift聚类算法的MATLAB程序
mean shift聚类算法的MATLAB程序 凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. mean shift 简介 mean shift, 写的 ...
- 转载 | Python AI 教学│k-means聚类算法及应用
关注我们的公众号哦!获取更多精彩哦! 1.问题导入 假如有这样一种情况,在一天你想去某个城市旅游,这个城市里你想去的有70个地方,现在你只有每一个地方的地址,这个地址列表很长,有70个位置.事先肯定要 ...
- 【Python机器学习实战】聚类算法(1)——K-Means聚类
实战部分主要针对某一具体算法对其原理进行较为详细的介绍,然后进行简单地实现(可能对算法性能考虑欠缺),这一部分主要介绍一些常见的一些聚类算法. K-means聚类算法 0.聚类算法算法简介 聚类算法算 ...
- Kmeans聚类算法原理与实现
Kmeans聚类算法 1 Kmeans聚类算法的基本原理 K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一.K-means算法的基本思想是:以空间中k个点为中心进行聚类,对 ...
随机推荐
- WP REST API: 设置和使用OAuth 1.0a Authentication(原文)
In the previous part of the series, we set up basic HTTP authentication on the server by installing ...
- 【C#】MVC+EF+LINQ 综合小项目
第一,创建数据库 create table category(id int primary key,name nvarchar(20)) create table news(id int primar ...
- Mysql避免重复插入记录方法
一.mysql replace用法 1.replace into replace into table (id,name) values('1','aa'),('2','bb') 此语句的作用是向 ...
- Http报头中不能添加中文字符
今逢一Bug,如下: Invalid non-ASCII or control character in header: 0x6D4B 大意为:报头中有非法字符.故可将其编码后,set入Header, ...
- SQL Server 根据关键字和结束符提取字符串子串
/* @info-待截取的字符串 @indexStr-截取子串的起始字符串 @split-截取子串的结束符号 列入依次传入 胸片:正常.心电图:异常,需要注意.血常规检查:正常. 心电图 '.' 返回 ...
- 单源最短路SPFA算法
$huaji^{233……}$模板:洛谷 P3371 #include<iostream> #include<algorithm> #include<cstdio> ...
- ubtuntu 如何查看内存用量 mongostat详解
free -h top free或者top或者cat /proc/meminfo mongostat是mongdb自带的状态检测工具,在命令行下使用.它会间隔固定时间获取mongodb的当前运行状态, ...
- java技术
线程池的原理及实现:https://blog.csdn.net/hsuxu/article/details/8985931 Java高级工程师面试题总结及参考答案:https://www.cnblog ...
- swift pod 第三方库异常的处理
Xcode8—Swift开发使用Cocoapods引入第三方库异常处理方法 参考: http://www.jianshu.com/p/23f13be525a0 //podfile文件如下 platf ...
- 如何把win10系统迁移到SSD固态硬盘
https://jingyan.baidu.com/article/5d368d1ec59ac43f60c05733.html 我之前将两个盘都已经固定在笔记本内,迁移完之后无论怎么改还是从原来的机械 ...