您的位置:首页 > 其它

R语言简单聚类分析

2016-07-16 10:34 260 查看
#以R基础包自带的鸢尾花(Iris)数据进行聚类分析
iris
data <- iris[,1:4]

#系统聚类法(层次聚类法)
distance <- dist(data) #计算距离
iris.hc <- hclust(distance) #聚类分析,计算距离方法是complete
plot( iris.hc, hang = -1) #绘画系谱图
re <- rect.hclust(iris.hc, k = 3) #分为三类
iris.id <- cutree(iris.hc, 3)
#生成列联表 将iris.id与iris中Species作比较发现:1应该是setosa类,2应该是virginica类(因为virginica的个数明显多于versicolor),3是versicolor。
table(iris.id, iris$Species)

iris.hc1 <- hclust(distance,method="single")
plot(iris.hc1, hang = -1) #绘画系谱图
re1 <- rect.hclust(iris.hc1, k = 3) #分为三类

iris.hc2 <- hclust(distance,method="ward.D")
plot(iris.hc2, hang = -1) #绘画系谱图
re2 <- rect.hclust(iris.hc2, k = 3) #分为三类
iris.id2 <- cutree(iris.hc2, 3)
table(iris.id2, iris$Species)

iris.hc3 <- hclust(distance,method="ward.D2")
plot(iris.hc3, hang = -1) #绘画系谱图
re3 <- rect.hclust(iris.hc3, k = 3) #分为三类

iris.hc4 <- hclust(distance,method="average")
plot(iris.hc4, hang = -1) #绘画系谱图
re4 <- rect.hclust(iris.hc4, k = 3) #分为三类

#plclust( iris.hc, labels = FALSE, hang = -1) #不推荐使用
# dist <- dist(data.frame(id=c(1,1,1,1),a=c(1,2,4,6),b=c(1,1,2,3),c=c(1,1,2,3)))

#动态聚类(逐步聚类法)
library("fpc")
kmeans <- kmeans(na.omit(data), 3)
plotcluster(na.omit(data), kmeans$cluster)


此处暂不截屏显示结果!

原文地址:http://blog.sciencenet.cn/blog-1114360-735780.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: