【文件属性】:
文件名称:贝叶斯判别程序
文件大小:1006B
文件格式:R
更新时间:2016-06-06 07:29:00
bayes
数学判别
discriminiant.bayes<-function
(TrnX1, TrnX2, rate=1, TstX = NULL, var.equal = FALSE){
if (is.null(TstX) == TRUE) TstX<-rbind(TrnX1,TrnX2)
if (is.vector(TstX) == TRUE) TstX<-t(as.matrix(TstX))
else if (is.matrix(TstX) != TRUE)
TstX<-as.matrix(TstX)
if (is.matrix(TrnX1) != TRUE) TrnX1<-as.matrix(TrnX1)
if (is.matrix(TrnX2) != TRUE) TrnX2<-as.matrix(TrnX2)
nx<-nrow(TstX)
blong<-matrix(rep(0, nx), nrow=1, byrow=TRUE,
dimnames=list("blong", 1:nx))
mu1<-colMeans(TrnX1); mu2<-colMeans(TrnX2)
if (var.equal == TRUE || var.equal == T){
S<-var(rbind(TrnX1,TrnX2)); beta<-2*log(rate)
w<-mahalanobis(TstX, mu2, S)-mahalanobis(TstX, mu1, S)
}
else{
S1<-var(TrnX1); S2<-var(TrnX2)
beta<-2*log(rate)+log(det(S1)/det(S2))
w<-mahalanobis(TstX, mu2, S2)-mahalanobis(TstX, mu1, S1)
}
for (i in 1:nx){
if (w[i]>beta)
blong[i]<-1
else
blong[i]<-2
}
blong
}