1、分层聚类
#载入R自带的测试数据 #data(iris) #attach(iris) inData = iris[,1:4] #计算距离矩阵,并绘图 inData.dist = dist(inData) #inData.dist = dist(inData,method='euclidean') heatmap(as.matrix(inData.dist), labRow = F, labCol = F) #进行分层聚类 #并绘图 #inData.hc <- hclust(inData.dist) #inData.hc <- hclust(inData.dist,method='ward') plot(inData.hc, labels = FALSE, hang = -1) #标识聚类结果,结果设为3类 rect.hclust(inData.hc, k = 3) #将Tree进行分组 inData.groups <- cutree(inData.hc, 3) #输出结果表格 table(inData.groups, Species) #进行降维处理 #绘图对比结果 #形状是正确的数据 #颜色为聚类后的数据 mds=cmdscale(inData.dist,k=2,eig=T) x = mds$points[,1] y = mds$points[,2] library(ggplot2) p=ggplot(data.frame(x,y),aes(x,y)) p+geom_point(size=3,alpha=0.8,aes(colour=factor(inData.groups),shape=iris$Species))
2、K值聚类
#载入R自带的测试数据 #data(iris) #attach(iris) inData = iris[,1:4] #计算距离矩阵,并绘图 inData.dist = dist(inData) #inData.dist = dist(inData,method='euclidean') heatmap(as.matrix(inData.dist), labRow = F, labCol = F) #进行K值聚类 inData.kc <- kmeans(inData.dist,centers=3) #绘图对比结果 #形状是正确的数据 #颜色为聚类后的数据 library(ggplot2) x=inData[c("Sepal.Length")] y=inData[c("Sepal.Width")] p=ggplot(data.frame(x,y),aes(x,y)) p+geom_point(size=3,alpha=0.8,aes(colour=factor(inData.kc$cluster),shape=iris$Species))