setwd("C:/Users/lenovo/Desktop")
d6.1<- read.table("d6.1.txt",header = T)
meanx1=apply(matrix(d6.1$x1,nrow=10),2,mean)#计算x1不同类别的均值
meany1=apply(matrix(d6.1$x2,nrow=10),2,mean)#计算x2不同类别的均值
mx=matrix(c(meanx1[1],meany1[1]),nrow=2)#得到第一类别的均值向量
my=matrix(c(meanx1[2],meany1[2]),nrow=2)#得到第二类别的均值向量
x=head(d6.1,n=10)#提取第一类别的数据
y=tail(d6.1,n=10)#提取第二类别的数据
s1=cov(x)#计算第一类别的协方差矩阵 s2=cov(y)#计算第二类别的协方差矩阵 sp2=((nrow(x)-1)s1+(nrow(y)-1)s2)/(nrow(x)+nrow(y)-2)#计算sp2,得到合并协方差矩阵 a=t(mx-my)%*%solve(sqrt(sp2));a#计算线性判别系数a
对于明氏距离,当q=1时,称为绝对值距离;当q=2时,称为欧式距离。 通过对例7.2分别使用这两种距离计算距离矩阵,再使用最短距离法进行聚类分析,得到结果如下图。容易看出,两种距离计算方法使得分类过程中具体分类的前后顺序有所不同,但是对聚类的最终结果没有明显影响。
setwd("C:/Users/lenovo/Desktop")
d7.2<- read.table("d7.2.txt",header = T)
#q=2时
d1=dist(d7.2)#默认为euclidean距离
hc1<-hclust(dist(d7.2),"single")#最短距离法,默认采用euclidean距离
cbind(hc1$merge,hc1$height)#分类过程
## [,1] [,2] [,3]
## [1,] -16 -30 173.1395
## [2,] -31 1 182.0111
## [3,] -28 -29 195.4877
## [4,] -12 -17 199.5592
## [5,] 2 3 225.4701
## [6,] -14 -24 229.9457
## [7,] -3 5 256.8843
## [8,] -8 7 259.6152
## [9,] -18 -27 267.1261
## [10,] -20 4 287.6223
## [11,] 9 10 294.6733
## [12,] -23 11 304.3706
## [13,] -4 8 317.9225
## [14,] 12 13 324.4302
## [15,] -7 14 335.0472
## [16,] 6 15 382.7438
## [17,] -6 -22 436.9577
## [18,] 16 17 459.4421
## [19,] -15 18 460.2322
## [20,] -25 19 473.3855
## [21,] -5 20 486.0696
## [22,] -26 21 575.1941
## [23,] -21 22 579.3381
## [24,] -10 23 603.3033
## [25,] -13 24 633.4324
## [26,] -1 -11 642.5038
## [27,] -2 25 707.7825
## [28,] -19 26 877.2699
## [29,] -9 28 1412.9635
## [30,] 27 29 1415.4877
plot(hc1)#聚类图
#q=1时
d2=dist(d7.2,method="minkowski",p=1)#manhattan距离
hc2<-hclust(d2,"single")#最短距离法
cbind(hc2$merge,hc2$height)#分类过程
## [,1] [,2] [,3]
## [1,] -16 -30 390.86
## [2,] -31 1 447.23
## [3,] -12 -17 459.90
## [4,] -28 -29 461.37
## [5,] -14 -24 501.32
## [6,] -3 2 526.77
## [7,] -8 6 537.73
## [8,] -20 3 541.72
## [9,] 4 7 542.32
## [10,] -18 -27 617.41
## [11,] 8 10 623.73
## [12,] 9 11 652.09
## [13,] -23 12 722.01
## [14,] -4 13 737.20
## [15,] 5 14 780.30
## [16,] -7 15 877.39
## [17,] -15 16 990.50
## [18,] -25 17 1010.01
## [19,] -22 18 1029.27
## [20,] -6 19 1106.17
## [21,] -5 20 1116.18
## [22,] -21 21 1183.46
## [23,] -26 22 1301.87
## [24,] -10 23 1307.37
## [25,] -2 24 1432.56
## [26,] -13 25 1484.97
## [27,] -1 -11 1529.05
## [28,] -19 27 1995.83
## [29,] -9 28 2984.12
## [30,] 26 29 3222.23
plot(hc2)#聚类图
d7.2=as.matrix(d7.2)
cov=solve(cov(d7.2))
n=nrow(d7.2)
d=matrix(0,nrow=n,ncol=n,byrow=T)
for(i in 1:n){
for(j in 1:n){
a=(d7.2[i,]-d7.2[j,])
d[i,j]=t(a)%*%cov%*%a
}
}
do=as.dist(d)
hcm=hclust(do,"single")
cbind(hcm$merge,hcm$height)
## [,1] [,2] [,3]
## [1,] -16 -31 1.636868
## [2,] -28 -29 1.940308
## [3,] -30 1 1.961447
## [4,] -12 -27 2.170468
## [5,] -18 4 2.330631
## [6,] -10 5 2.358242
## [7,] -20 6 2.432728
## [8,] 2 7 2.605194
## [9,] -24 8 2.641613
## [10,] -6 -7 3.295008
## [11,] -5 3 3.502037
## [12,] 9 11 3.596494
## [13,] -8 12 3.677372
## [14,] -15 13 3.686215
## [15,] -3 14 3.695693
## [16,] -17 15 3.990459
## [17,] -14 -23 4.170672
## [18,] 16 17 4.613802
## [19,] 10 18 4.725416
## [20,] -22 19 4.873340
## [21,] -4 20 5.105068
## [22,] -21 21 8.484728
## [23,] -2 22 9.661789
## [24,] -13 23 9.810646
## [25,] -19 24 11.084696
## [26,] -25 25 13.427940
## [27,] -1 26 15.247540
## [28,] -11 27 15.731549
## [29,] -26 28 15.860120
## [30,] -9 29 17.528927
plot(hcm)