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)