聚类分析

2017-07-03  本文已影响0人  巴拉巴拉_9515
文森特·梵高 :粉红色的桃花树

01、聚类分析

在没有先验知识的情况下,对样本按各自的特性来进行合理的分类
聚类分析:不需要先知道所属类别就可以实现按各自特性的分类

聚类分析有两种主要计算方法,分别是凝聚层次聚类(Agglomerative hierarchical method)和K均值聚类(K-Means)
(1)层次聚类首先要定义样本之间的距离关系,距离较近的归为一类,较远的则属于不同的类。
(2)K均值聚类不需要计算距离,但要求事先给出分类个数

02、iris聚类分析

2.1、层次聚类

ris数据集包含5个方面的信息,为了探索聚类分析,所以采用前4个变量作为模型前期数据,使用species作为聚类模型结果的验证。

数据集

(1)首先提取iris数据中的4个数值变量,然后计算其欧氏距离矩阵。
(2)然后将矩阵绘制热图,从图中可以看到颜色越深表示样本间距离越近·
从图中可以看到颜色越深表示样本间距离越近。大致上可以区分出三到四个区块,其样本之间比较接近。

热力图
data<-iris[,-5]  #删除第五行
dist.e <- dist(data,method='euclidean')  #变量间欧式距离的数据集
heatmap(as.matrix(dist.e),labRow = F, labCol = F)

使用hclust完成数据集的层次聚类,plot函数可以查看聚类结果
使用cutree函数提取每个样本所属的类别

#--------------------------------------------->2、层次聚类模型
#建立聚类模型
model1<-hclust(dist.e,method='ward.D') #采用离差平方和法处理距离
plot(model1) #绘制聚类树图:没什么用的结果
result<-cutree(model1,k=3) #使用cutree函数提取每个样本所属的类别

到此就完成了150个数据的类别划分

层次聚类结果

可视化展现层次聚类结果
setose品种聚类很成功,但有一些virginica品种的花被错误和virginica品种聚类到一起

#------------------------------------------------->3、层次聚类结果展示
#----------------------------------------------------->3.1、MDS降维
mds<-cmdscale(dist.e,k=2,eig=T)
x <- mds$points[,1]
y <- mds$points[,2]
#----------------------------------------------------->3.2、聚类结果显示
#以不同的的形状表示原本的分类,用不同的颜色来表示聚类的结果
library(ggplot2)
p<-ggplot(data.frame(x,y),aes(x,y))
p+geom_point(size=3,alpha=0.8,aes(colour=factor(result),shape=iris$Species))
#setose品种聚类很成功,但有一些virginica品种的花被错误和virginica品种聚类到一起
层次聚类结果

2.2、K均值聚类

使用kmeans函数进行K均值聚类

model2<-kmeans(data,centers=3,nstart=10)
model2$cluster    #model2$cluster可以用来提取每个样本所属的类别
data$type<-model2$cluster
data$id<-rownames(data)

centers参数用来设置分类个数,
nstart参数用来设置取随机初始中心的次数,其默认值为1,但取较多的次数可以改善聚类效果
K均值聚类后,数据集的结果为:

K均值聚类

如果聚类正确的话,圆形点对应红色;三角形对应蓝色;方框对应绿色
K均值聚类setose品种聚类比较好,但有一些virginica品种的花被错误和virginica品种聚类到一起

K均值聚类结果
上一篇 下一篇

猜你喜欢

热点阅读