R语言之实现K-mean聚类算法
Posted R语言交流中心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言之实现K-mean聚类算法相关的知识,希望对你有一定的参考价值。
聚类算法作为无监督的学习方法,在不给出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)#绘制散点图矩阵
欢迎大家学习交流:
以上是关于R语言之实现K-mean聚类算法的主要内容,如果未能解决你的问题,请参考以下文章