K-means聚类分析
一、原理
- 先确定簇的个数,K
- 假设每个簇都有一个中心点 centroid
- 将每个样本点划分到距离它最近的中心点所属的簇中
选择K个点做为初始的中心点
while()
{
将所有点分配个K个中心点形成K个簇
重新计算每个簇的中心点
if(簇的中心点不再改变)
break;
}

- 目标函数:定义为每个样本与其簇中心点的距离的 平方和(theSum of Squared Error, SSE)

– μk 表示簇Ck 的中心点(或其它能代表Ck的点)
– 若xn被划分到簇Ck则rnk=1,否则rnk= 0
• 目标:找到簇的中心点μk及簇的划分rnk使得目标 函数SSE最小

- 初始中心点通常是随机选取的(收敛后得到的是局部最优解)
不同的中心点会对聚类结果产生不同的影响:
1、

2、

此时你一定会有疑问:如何选取"较好的"初始中心点?
- 凭经验选取代表点
- 将全部数据随机分成c类,计算每类重心座位初始点
- 用“密度”法选择代表点
- 将样本随机排序后使用前c个点作为代表点
- 从(c-1)聚类划分问题的解中产生c聚类划分问题的代表点
结论:若对数据不够了解,可以直接选择2和4方法
- 需要预先确定K
Q:如何选取K
SSE一般随着K的增大而减小

A:emmm你多尝试几次吧,看看哪个合适。斜率改变最大的点比如k=2
总结:
简单的来说,K-means就是假设有K个簇,然后通过上面找初始点的方法,找到K个初始点,将所有的数据分为K个簇,然后一直迭代,在所有的簇里面找到找到簇的中心点μk及簇的划分rnk使得目标函数SSE最小或者中心点不变之后,迭代完成。成功把数据分为K类。
预告:下一篇博文讲K-means代码实现
K-means聚类分析的更多相关文章
- SPSS聚类分析:K均值聚类分析
SPSS聚类分析:K均值聚类分析 一.概念:(分析-分类-K均值聚类) 1.此过程使用可以处理大量个案的算法,根据选定的特征尝试对相对均一的个案组进行标识.不过,该算法要求您指定聚类的个数.如果知道, ...
- KNN 与 K - Means 算法比较
KNN K-Means 1.分类算法 聚类算法 2.监督学习 非监督学习 3.数据类型:喂给它的数据集是带label的数据,已经是完全正确的数据 喂给它的数据集是无label的数据,是杂乱无章的,经过 ...
- 软件——机器学习与Python,聚类,K——means
K-means是一种聚类算法: 这里运用k-means进行31个城市的分类 城市的数据保存在city.txt文件中,内容如下: BJ,2959.19,730.79,749.41,513.34,467. ...
- R 语言实战-Part 5-1笔记
R 语言实战(第二版) part 5-1 技能拓展 ----------第19章 使用ggplot2进行高级绘图------------------------- #R的四种图形系统: #①base: ...
- Python使用RMF聚类分析客户价值
投资机构或电商企业等积累的客户交易数据繁杂.需要根据用户的以往消费记录分析出不同用户群体的特征与价值,再针对不同群体提供不同的营销策略. 用户分析指标 根据美国数据库营销研究所Arthur Hughe ...
- 快速查找无序数组中的第K大数?
1.题目分析: 查找无序数组中的第K大数,直观感觉便是先排好序再找到下标为K-1的元素,时间复杂度O(NlgN).在此,我们想探索是否存在时间复杂度 < O(NlgN),而且近似等于O(N)的高 ...
- SPSS与聚类分析
1.进行K均值聚类分析时需要线标准化处理,抛弃量纲差异,比如说数值型变量有的以千记有的以百分数记.2.层次聚类就是先把每个样本都看成一个独立的类:聚类特征(Clustering Feature, CF ...
- 网络费用流-最小k路径覆盖
多校联赛第一场(hdu4862) Jump Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- numpy.ones_like(a, dtype=None, order='K', subok=True)返回和原矩阵一样形状的1矩阵
Return an array of ones with the same shape and type as a given array. Parameters: a : array_like Th ...
- R数据挖掘 第一篇:聚类分析(划分)
聚类是把一个数据集划分成多个子集的过程,每一个子集称作一个簇(Cluster),聚类使得簇内的对象具有很高的相似性,但与其他簇中的对象很不相似,由聚类分析产生的簇的集合称作一个聚类.在相同的数据集上, ...
随机推荐
- Python第三方库之Numpy库
概述 Numpy 最基本的库,是用于处理含有同种元素的多维数组运算的第三方库 —科学计算包,python数据分析及科学计算的基础库,几乎支撑所有其他库 —支持N维数组运算.处理大型矩阵.成熟的广播函 ...
- LeetCode--Array--Remove Duplicates from Sorted Array (Easy)
26. Remove Duplicates from Sorted Array (Easy) Given a sorted array nums, remove the duplicates in-p ...
- 随笔 - B树算法实现
写代码之前,再回顾一下B树是什么,满足什么样的规则 B树规则: 排序方式:所有节点关键字是按递增次序排列,并遵循左小右大原则 子节点数:非叶节点的子节点数>1,且<=M ,且M>=2 ...
- Spring Cloud 系列之 Config 配置中心(一)
服务配置现状 配置文件是我们再熟悉不过的,在微服务系统中,每个微服务不仅仅只有代码,还需要连接其他资源,例如数据库的配置或功能性的开关 MySQL.Redis .Security 等相关的配置.除了项 ...
- OpenCV 3.4.2 Windows系统下的环境搭建(附带opencv_contrib-3.4.2)
前言 当前需要回到Windows平台下进行开发,在win10系统上搭建了编译opencv3.4.2的环境,并添加opencv_contrib-3.4.2的模块,以下是本文所需要的软件以及源码. 系统: ...
- python语法学习第十一天--迭代器
迭代:类似循环,这一次的值作为下一次迭代的开始值 BIF:iter():将某个可以作为迭代器的容器变为迭代器 next():做下一次迭代 当next()到最后一个时,抛出StopIteration ...
- Python--oop面向对象的学习1
类和对象的成员分析 ·类和对象都可以存储成员,成员可以归类为所有,也可以归对象所有 ·类存储成员时使用的是与类关联的一个对象 ·独享存储成员时存储在当前对象中 ·对象访问一个成员,如果对象中没有该成员 ...
- JavaWeb学习之JSP(三) EL表达式
EL表达式 什么是EL表达式 EL,Expression Language,表达式语言,是一种在JSP页面中获取数据的简单方式,通过${变量名}的方式可以获取到值,需要注意的是EL只能从 page ...
- sonar 安装,centos7配置优化
/etc/sysctl.conf /etc/systemd/system.conf /etc/security/limits.conf /proc/sys/fs/file-max /etc/secur ...
- javascript 页面各种高度宽度
http://www.jb51.net/article/19844.htm js获取浏览器高度和宽度值,尽量的考虑了多浏览器. 图片 IE中: document.body.clientWidth == ...