パターン認識 理論と応用ー (朝倉書店)



#直線度(主成分分析を利用した) p.58

data("anscombe")

X=unlist(matrix(anscombe[,colnames(anscombe) %in% c("x1","x2","x3","x4")]))

Y=unlist(matrix(anscombe[,colnames(anscombe) %in% c("y1","y2","y3","y4")]))

M=3

no=c(1:length(X))

ave_L=0

while(ave_L<0.9)({

sig=0

while(sig==0)({

clus=sample(1:M,length(no),replace=T)

len=c()

for(j in 1:M){

len=c(len,length(clus[clus==j]))  

}

if(min(len)>2){

sig=1  

}

})

L_val=c();ns=c()

for(j in 1:M){

x=X[clus==j]

y=Y[clus==j]

n=length(x)

cov=cov(cbind(x,y))

eig_values=eigen(cov)$values

eig_vectors=eigen(cov)$vectors

I1=cov[1,1]+cov[2,2]

I2=4*cov[1,2]^2+(cov[1,1]-cov[2,2])^2

L=sqrt(I2)/I1

L_val=c(L_val,L)

ns=c(ns,n)

}

ave_L=sum(ns*L_val)/sum(ns)

})