日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

R语言——线性判别分析(LDA)

發布時間:2023/12/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 R语言——线性判别分析(LDA) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

R語言——線性判別分析*

線性判別分析是一種經典的線性學習方法,在二分類問題上最早由Fisher在1936年提出,亦稱Fisher線性判別。線性判別的思想非常樸素:給定訓練樣例集,設法將樣例投影到一條直線上,使得同類樣例的投影點盡可能接近,異樣樣例的投影點盡可能遠離;在對新樣本進行分類時,將其投影到同樣的直線上,再根據投影點的位置來確定新樣本的類別 。

LDA與方差分析(ANOVA)和回歸分析緊密相關,這兩種分析方法也試圖通過一些特征或測量值的線性組合來表示一個因變量。然而,方差分析使用類別自變量和連續數因變量,而判別分析連續自變量和類別因變量(即類標簽)。邏輯回歸和概率回歸比方差分析更類似于LDA,因為他們也是用連續自變量來解釋類別因變量的。LDA的基本假設是自變量是正態分布的,當這一假設無法滿足時,在實際應用中更傾向于用上述的其他方法。LDA也與主成分分析(PCA)和因子分析緊密相關,它們都在尋找最佳解釋數據的變量線性組合。LDA明確的嘗試為數據類之間不同建立模型。 另一方面,PCA不考慮類的任何不同,因子分析是根據不同點而不是相同點來建立特征組合。判別的分析不同因子分析還在于,它不是一個相互依存技術:即必須區分出自變量和因變量(也稱為準則變量)的不同。在對自變量每一次觀察測量值都是連續量的時候,LDA能有效的起作用。當處理類別自變量時,與LDA相對應的技術稱為判別反應分析。

下面對R語言實現過程詳細介紹

1.導入數據并做初步處理

mydata <- read.csv("tongji.csv") mydatamydata$Group <- as.factor(mydata$Group) #將Grop中的1,2轉換成因子變量 attach(mydata)

2.觀察數據分布情況

library(ggplot2) #導入包ggplot ggplot(data = mydata , aes(x = height , y = weight , shape = Group ,color = Group)) 1. geom_point() + geom_text(aes(label = 性別) , vjust = -0.8) #畫出散點圖,初步觀察數據分布情況


3. 建立判別函數

library(MASS) #導入包MASS sexyLd <- lda(Group ~ height + weight , data = mydata) #建立判別函數1 sexyLd1 <- lda(Group ~ height + weight + Vital.capacity + sprint + Endurance.running + Sitting.body.flexion + jump + Sit.ups +point , data = mydata) #建立判別函數2 sexyLd #查看函數1結果 sexyLd1 #查看函數2結果> sexyLd Call: lda(Group ~ height + weight, data = mydata)Prior probabilities of groups:1 2 0.537415 0.462585 Group means:height weight 1 161.4253 52.95823 2 172.9287 66.36993Coefficients of linear discriminants:LD1 height 0.15748938 weight 0.02471315# 判別函數為y = 0.1575x1 + 0.02471x2> sexyLd1 Call: lda(Group ~ height + weight + Vital.capacity + sprint + Endurance.running + Sitting.body.flexion + jump + Sit.ups + point, data = mydata)Prior probabilities of groups:1 2 0.537415 0.462585 Group means:height weight Vital.capacity sprint Endurance.running Sitting.body.flexion jump Sit.ups point 1 161.4253 52.95823 2756.569 8.898101 3.782278 18.22215 171.0633 39.556962 77.58165 2 172.9287 66.36993 4054.000 7.370588 4.044044 12.01985 226.2721 4.227941 69.18750Coefficients of linear discriminants:LD1 height 0.0326378585 weight -0.0121919891 Vital.capacity 0.0003658433 sprint -0.9165278712 Endurance.running -0.4659634284 Sitting.body.flexion -0.0017160164 jump 0.0297380110 Sit.ups -0.0724816461 point -0.1259426473# 判別函數為y = 0.0326x1 - 0.0122x2 + 0.0004x3 - 0.9165x4 - 0.4660x5 - 0.0017x6 + 0.0297x7 - 0.0725x8 - 0.1259x9

4.預測并原數據進行比較

sexyPredict <- predict(sexyLd) #根據線性函數模型預測所屬類別 newGroup <- sexyPredict$class #預測的所屬類的結果 cbind(mydata$Group , sexyPredict$x , newGroup) #顯示預測前后分組結果 sexyPredict1 <- predict(sexyLd1) #根據線性函數模型預測所屬類別 newGroup1 <- sexyPredict1$class #預測的所屬類的結果 cbind(mydata$Group , sexyPredict1$x , newGroup1) #顯示預測前后分組結果

5.對模型進行評價

tab <- table(mydata$Group , newGroup) #繪制混淆矩陣 tab erro <- 1-sum(diag(prop.table(tab))) #計算誤判率 erro plot(tab) #可視化tab1 <- table(mydata$Group , newGroup1) #繪制混淆矩陣 tab1 erro1 <- 1-sum(diag(prop.table(tab1))) #計算誤判率 erro1 plot(tab1) #可視化> tabnewGroup1 21 137 212 27 109> erro [1] 0.1632653> tab1newGroup11 21 158 02 2 134 > erro1 [1] 0.006802721 #顯然考慮的因素多了,判斷率正確率明顯提高


6.給定數字進行判別分類

predict(sexyLd , newdata = data.frame(height = 171 , weight = 50)) #預測1predict(sexyLd1 , newdata = data.frame(height = 168, weight = 60 , Vital.capacity = 3500 , sprint = 7.1 , Endurance.running = 4.20 , Sitting.body.flexion = 10.3, jump = 2.29, Sit.ups = 25 , point = 80)) #預測2> predict(sexyLd , newdata = data.frame(height = 171 , weight = 50)) #預測1$class [1] 2> predict(sexyLd1 , newdata = data.frame(height = 168, weight = 60 , Vital.capacity = 3500 , sprint = 7.1 , Endurance.running = 4.20 , Sitting.body.flexion = 10.3, jump = 2.29, Sit.ups = 25 , point = 80))$class [1] 1 # 1代表女性 2代表男性

`

總結

以上是生活随笔為你收集整理的R语言——线性判别分析(LDA)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。