R語言與概率統計(四) 判別分析(分類)


 

 

Fisher就是找一個線L使得組內方差小,組間距離大。即找一個直線使得d最大。

 

####################################1、判別分析,線性判別:2、分層抽樣

#install.packages('MASS')
library(MASS)
#install.packages('sampling')
library(sampling)#抽樣時使用
?iris#了解該數據集
#把iris重新賦值,並加入分類標記和行號標記
i<-iris#為了書寫方便
i$lv<-as.numeric(i$Species)#把最后一列變成數值型變量
i$lv<-as.factor(i$lv) #轉成因子
i$id<-c(1:150)#添加變量id
#進行分層抽樣,每個類別隨機抽出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),]#%in%在此處表示i與i.s中標號相同的點。1 %in% 1
i.predict<-i[(i$id %in% i.s$ID_unit),]
#擬合線性判別lda
fit<-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)
#非線性規划
fit2<-qda(lv~.-id-Species,data=i.train)

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM