前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言之实现K-mean聚类算法

R语言之实现K-mean聚类算法

作者头像
一粒沙
发布2019-07-31 15:30:41
3.1K0
发布2019-07-31 15:30:41
举报
文章被收录于专栏:R语言交流中心

聚类算法作为无监督的学习方法,在不给出Y的情况下对所有的样本进行聚类。以动态聚类为基础的K均值聚类方法是其中最简单而又有深度的一种方法。K均值的好处是我们可以在了解数据的情况下进行对样本的聚类,当然他也有自己的弱点就是对大数据的运作存在一定的局限。我们以R基础包自带的鸢尾花(Iris)数据进行聚类分析的演示。利用R语言的K均值聚类函数kmeans(),进行聚类,首先我们介绍下kmeans()的构成

官方的解释查看代码:?kmeans

如图:

我们主要用的参数是:

X:我们要用来聚类的数据,作为一个矩阵输入。

Centers:我们要聚类的数量,需要自己进行填写。

Method:分为single(最短距离),complete(最长距离),median(中间距离),average(类平均),centroid(重心),ward(离差平均和)

1. 我们看下iris 的数据结构:

代码: dim(iris) #查看数据的行列数

str(iris)#查看数据的变量

2. 获取我们聚类需要的数据。也就是去掉最后一列的物种标记信息。

代码:train=iris[1:150,1:4] # 获取数据的前四列

3. 利用kmeans() 进行聚类分析,并查看模型结果的构成。

代码:model=kmeans(train)

如图:

Cluster means: 每个聚类中各个列值生成的最终平均值

Clustering vector: 每行记录所属的聚类(2代表属于第二个聚类,1代表属于第一个聚类,3代表属于第三个聚类)

Within cluster sum of squares by cluster: 每个聚类内部的距离平方和

Available components: 运行kmeans函数返回的对象所包含的各个组成部分

"cluster"是一个整数向量,用于表示记录所属的聚类 "centers"是一个矩阵,表示每聚类中各个变量的中心点 "totss"表示所生成聚类的总体距离平方和 "withinss"表示各个聚类组内的距离平方和 "tot.withinss"表示聚类组内的距离平方和总量 "betweenss"表示聚类组间的聚类平方和总量 "size"表示每个聚类组中成员的数量

4. 可视化展示结果:

代码:result=cbind(train,as.character(model$cluster)) #将数据与聚类结果整合

plot(result,col=model$cluster)#绘制散点图矩阵

欢迎大家学习交流

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言交流中心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档