聚类,其实就是近朱者赤
点上方 “趣味数据周刊”,关注公众号
文章期号:20190604
第二章统计进阶,多元统计:聚类分析
简而言之,聚类分析就是将研究对象(若干个个集合)按照某种标准分成若干类。相似性的度量,参考多种距离计算公式:欧式距离,绝对距离,切氏距离,明氏距离,马距氏离,兰距氏离。你也可以根据研究对象特征自己定义出一种度量相似度的距离公式
1,直奔主题
今天我们主要讨论,通过R工具怎么运用现有的,常用的聚类方法。本文主要结合实际案例,来介绍两种常用的聚类:系统聚类法和K均值聚类法。
系统聚类法:将10种红酒分类
K均值聚类法:根据31省市的消费数据,将31省市分成4类。
2,系统聚类法:
10种红葡萄酒的分数数据表:
酒 颜色x1 香味x2 酸度x3 甜度x4 纯度x5 果味x61 4.65 4.22 5.01 4.50 4.15 4.122 6.32 6.11 6.21 6.85 6.52 6.333 4.87 4.60 4.95 4.15 4.02 4.114 4.88 4.68 4.43 4.12 4.03 4.145 6.73 6.65 6.72 6.13 6.51 6.366 7.45 7.56 7.60 7.80 7.20 7.187 8.10 8.23 8.01 7.95 8.31 8.268 8.42 8.54 8.12 7.88 8.26 7.989 6.45 6.81 6.52 6.31 6.27 6.0610 7.50 7.32 7.42 7.52 7.10 6.95R实现系统聚类计算:
data4.1 <- read.table("eg4.1.txt", header=T)data4.1 x1 x2 x3 x4 x5 x61 4.65 4.22 5.01 4.50 4.15 4.122 6.32 6.11 6.21 6.85 6.52 6.333 4.87 4.60 4.95 4.15 4.02 4.114 4.88 4.68 4.43 4.12 4.03 4.145 6.73 6.65 6.72 6.13 6.51 6.366 7.45 7.56 7.60 7.80 7.20 7.187 8.10 8.23 8.01 7.95 8.31 8.268 8.42 8.54 8.12 7.88 8.26 7.989 6.45 6.81 6.52 6.31 6.27 6.0610 7.50 7.32 7.42 7.52 7.10 6.95d<-dist(data4.1, method="euclidean", diag=T, upper=F,p=2) #采用欧式距离计算相似性HC<-hclust(d,method="single") #采用最小距离分聚类plot(HC)#绘制聚类树状图结果产出:
如图,如果合并距离为4,则这10种酒可以分为两类:
第一类「6,10,7,8,2,5,9」,
第二类「1,3,4」.
3,K均值聚类法
基本思想是:根据给定参数K,先把n个对象粗略的分为k类,然后按照某种优先原则修改不合理的分类,直至准则函数收敛为止。
根据31个省市的8个方面的消费支出,将31省市分成4类,基于R实现K均值聚类法。
R实现K均值聚类计算:
> read.table(pipe("pbpaste"),sep='\t',header=T)->data> datap1 <-data.frame(x1=(data$x1),x2=(data$x2),x3=(data$x3),x4=(data$x4),x5=(data$x5),x6=(data$x6),x7=(data$x7),x8=(data$x8),row.names=(data$X))> KM<-kmeans(p1,4,nstart=20,algorithm="Hartigan-Wong")> sort(KM$cluster) 河北 山西 吉林 黑龙江 江西 河南 贵州 云南 西藏 甘肃 青海 宁夏 新疆 天津 江苏 福建 北京 上海 浙江 广东 内蒙古 辽宁 安徽 山东 湖北 湖南 广西 海南 重庆 四川 陕西 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 如R分类计算可知:
第一类省市:
河北 山西 吉林 黑龙江 江西 河南 贵州 云南 西藏 甘肃 青海 宁夏 新疆
第二类省市:
天津 江苏 福建
第三类省市:
北京 上海 浙江 广东
第四类省市:
内蒙古 辽宁 安徽 山东 湖北 湖南 广西 海南 重庆 四川 陕西
推荐阅读:
统计入门:大浪淘沙,让数据发光是一种能力
点赞分享,是最大的赞赏