首页 > 学院 > 开发设计 > 正文

R语言 判别分析小结

2019-11-08 02:52:40
字体:
来源:转载
供稿:网友

判别分析(discriminant analysis)是一种分类技术。它通过一个已知类别的“训练样本”来建立判别准则,并通过预测变量来为未知类别的数据进行分类。

判别分析的方法大体上有三类,即距离判别、Fisher判别和Bayes判别和。距离判别思想是根据已知分类的数据计算各类别的重心,对未知分类的数据,计算它与各类重心的距离,与某个重心距离最近则归于该类。Fisher判别思想是投影降维,使多维问题简化为一维问题来处理。选择一个适当的投影轴,使所有的样品点都投影到这个轴上得到一个投影值。对这个投影轴的方向的要求是:使每一组内的投影值所形成的组内离差尽可能小,而不同组间的投影值所形成的类间离差尽可能大。Bayes判别思想是根据先验概率求出后验概率,并依据后验概率分布作出统计推断。

用R进行判别分析的方法在MASS包,里面有lda(线性)和qda(二次) 注意使用条件:1、正态总体,2、协方差相同(线性)/不同(二次)

1、线性的判别分析

#载入相关包和数据集library(MASS)library(sampling)#把iris重新赋值,并加入分类标记和行号标记i<-irisi$lv<-as.numeric(i$Species)i$lv<-as.factor(i$lv)i$id<-c(1:150)#进行分层抽样,每个类别随机抽出10个作为预测集,剩下的作为训练集i.s<-strata(data=i,stratanames="lv",size=c(10,10,10),method="srswor",description=F)i.train<-i[!(i$id %in% i.s$ID_unit),]i.PRedict<-i[(i$id %in% i.s$ID_unit),]#拟合线性判别ldafit<-lda(lv~.-id-Species,data=i.train)#预测训练集和预测集Y<-predict(fit,i.train)YN<-predict(fit,i.predict)#查看拟合情况table(Y$class,i.train$lv)table(YN$class,i.predict$lv)

2、二次判别

#当协方差矩阵不相同时(即来自不同总体),沿用上一个已经做好的数据fit2<-qda(lv~.-id-Species,data=i.train,cv=T)#再进行结果的拟合Y2<-predict(fit,i.train)YN2<-predict(fit,i.predict)#查看拟合情况table(Y2$class,i.train$lv)table(YN2$class,i.predict$lv)#所得结果是一样的,不知道是否为数据的协方差是一样的原因。

另外,M一个使用贝叶斯进行判断分析的文章:R语言之判别分析、贝叶斯判别分析


上一篇:EL表达式详解

下一篇:JSTL标签大全详解

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表