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)#查看数据的变量

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

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

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

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

代码:model=kmeans(train)

如图:


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

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聚类算法

 

欢迎大家学习交流:


以上是关于R语言之实现K-mean聚类算法的主要内容,如果未能解决你的问题,请参考以下文章

无人机布局优化基于k-mean聚类的无人机布局优化matlab源码

5.2.2 K-Mean聚类算法

K-Mean聚类算法

K-mean matlab 实现代码

基于R语言的数据挖掘之聚类算法--基于密度方法

机器学习EM原理和K-mean聚类