setwd("D:\\Rdownload\\lianxi\\fourth") #设定工作路径
ex4.1<-read.csv("ex4.1.csv", header=T) #将ex4.1.csv数据读入到d4.1中
d4.1=ex4.1[,-1] #ex4.1的第一列不是数值先去掉
rownames(d4.1)=ex4.1[,1] #用ex4.1的第一列为d4.1的行重新命名
d4.1<-d4.1[-21,]
d<-dist(d4.1, method="euclidean", diag=T, upper=F, p=2)
#采用欧氏距离计算距离矩阵d, method为距离计算方法,包括“euclidean” (欧氏距离), “manhattan”(绝对距离),“maximum”(切氏距离), “minkowski”(明氏距离), "canberra"(兰氏距离)等; diag为是否输出对角线上的值, upper为是否输出d的上三角部分的值, p为明氏距离参数k.
HC<-hclust(d, method="single") #采用最小距离法(single)聚类.
plot(HC, hang=-1) #绘制最小距离法聚类树状图.当hang取负值时,从底部对齐开始绘制聚类树状图
abline(h=20) ; abline(h=13) #在图4.1中分别画合并距离为20和13的两条水平线,用来帮助我们确定分类
##由图可知,
##合并距离为 20 时,可以将这些啤酒分为三类:
##第一类:包括 Pabst-extral, Olympia-gold;第二类:包括 Sudeiser-lich, Coorslicht, Miller-lite, Schlite-light;第三类:包括 Schlitz, Aucsberger, Kronensourc, lonenbrau, Heineken, Kkirin, Michelos-lich, Secrs, Strchs-bohemi, Hamms, Coors, Budweiser, Old-milnaukee, Heilemans-old
##合并距离为 13 时,可以将这些啤酒分为六类:
##第一类:包括 Pabst-extra, Olympia-gold;第二类:包括 Sudeiser-lich; 第三类:包括 Coorslicht, Miller-lite, Schlite-light;第四类:包括 Schlitz, Aucsberger; 第五类:包括 Kronensourc;第六类:包括 lonenbrau, Heineken, Kkirin, Michelos-lich, Secrs, Strchs-bohemi, Hamms, Coors, Budweiser, Old-milnaukee, Heilemans-old
HC1<-hclust(d, method="complete") #采用最大距离法(complete)聚类.
plot(HC, hang=-1) #绘制最小距离法聚类树状图.当hang取负值时,从底部对齐开始绘制聚类树状图
rect.hclust(HC1,k=3,border="red") #用红色矩形框出3个分类
##由图可知,
##合并距离为 20 时,可以将这些啤酒分为三类:
##第一类:包括 Pabst-extral, Olympia-gold;第二类:包括 Sudeiser-lich, Coorslicht, Miller-lite, Schlite-light;第三类:包括 Schlitz, Aucsberger, Kronensourc, lonenbrau, Heineken, Kkirin, Michelos-lich, Secrs, Strchs-bohemi, Hamms, Coors, Budweiser, Old-milnaukee, Heilemans-old
##合并距离为 13 时,可以将这些啤酒分为六类:
##第一类:包括 Pabst-extra, Olympia-gold;第二类:包括 Sudeiser-lich; 第三类:包括 Coorslicht, Miller-lite, Schlite-light;第四类:包括 Schlitz, Aucsberger; 第五类:包括 Kronensourc;第六类:包括 lonenbrau, Heineken, Kkirin, Michelos-lich, Secrs, Strchs-bohemi, Hamms, Coors, Budweiser, Old-milnaukee, Heilemans-old
##这与最小距离法分类结果一致
setwd("D:\\Rdownload\\lianxi\\fourth") #设定工作路径
ex4.1<-read.csv("ex4.1.csv",header=T) #将ex4.1.csv数据读入
d4.1=ex4.1[,-1] #ex4.5的第一列不是数值先去掉
rownames(d4.1)=ex4.1[,1] #用ex4.1的第一列为d4.1的行重新命名
d4.1<-d4.1[-21,]
KM<-kmeans(d4.1, 3, nstart=15, algorithm="Hartigan-Wong") #聚类的个数为3;初始随机集合的个数为20, 算法为"Hartigan-Wong"(默认)
sort(KM$cluster) #对分类结果进行排序并查看
## Miller-lite Sudeiser-lich Coorslicht Pabst-extral Olympia-gold
## 1 1 1 1 1
## Schlite-light Schlitz Kronensourc Aucsberger Budweiser
## 1 2 2 2 3
## Ionenbrau Heineken Old-milnaukee Strchs-bohemi Coors
## 3 3 3 3 3
## Michelos-lich Secrs Kkirin Hamms Heilemans-old
## 3 3 3 3 3
KM<-kmeans(d4.1, 6, nstart=25) #聚类的个数 k=6
sort(KM$cluster)
## Ionenbrau Heineken Kkirin Coors Michelos-lich
## 1 1 1 2 2
## Hamms Budweiser Old-milnaukee Strchs-bohemi Secrs
## 2 3 3 3 3
## Heilemans-old Miller-lite Sudeiser-lich Coorslicht Schlite-light
## 3 4 4 4 4
## Schlitz Kronensourc Aucsberger Pabst-extral Olympia-gold
## 5 5 5 6 6
##两种情形下,Schlitz、Kronensourc、Aucsberger和Budweiser都聚为一类;Ionenbrau、Heineken、Old - milwaukee、Strchs - bohemi、Coors、Michelos - lich、Secrs和Kkirin都聚为一类;只是在其余品牌的分类上有一定变化,即k = 3时的第3类中有8个品牌划分出来单独聚为k = 6时的第4类。