1.1自编函数完成线性判别函数系数a的求解

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

2.1明氏距离的一致性。

  对于明氏距离,当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)#聚类图

2.3计算马氏距离,用最短距离法进行聚类分析

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)