R語言與分類(2)

2021-10-04 14:54:19 字數 1971 閱讀 1540

與舉例分析和fisher判別分析相比,貝葉斯判別分析考慮了不同總體類別的先驗概率,假如說有g1,g2,g3,g4四個p維總體,如果我們能預先得知這四個總體發生的概率,占得比例,那麼在得到新樣品時,就可以根據正態分佈密度函式和到各個總體先驗概率求出各個總體的後驗概率,找出最大的後驗概率對應的總體,即為其所屬類。這就是貝葉斯判別法思路。

貝葉斯判別法需假設各個總體服從多元正態分佈密度函式,也就是說,需要各個總體服從多元正態分佈,對資料有一定要求。

**實現:

首先進行多元正態分佈檢驗,用到mvn包,下面為函式引數。

mvn

(data, subset = null, mvntest =c(

"mardia"

,"hz"

,"royston"

,"dh"

,"energy"

), covariance = true, tol =

1e-25

, alpha =

0.5,

scale = false, desc = true, transform =

"none"

, r =

1000

, univariatetest =c(

"sw"

,"cvm"

,"lillie"

,"sf"

,"ad"),

univariateplot =

"none"

, multivariateplot =

"none"

, multivariateoutliermethod =

"none"

, bc = false, bctype =

"rounded"

, showoutliers = false, shownewdata = false)

我們只需要用到其中三個

下邊這個可以畫出等高線圖(二維變數),將contour替換成persp就可以畫出透檢視

mvn(iris[,1:2], mvntest =

"royston",multivariateplot = c(

"contour"

))

一般我們用下邊這列函式

mvn(iris[,1:4], mvntest ="hz",multivariateplot = c("qq"))

函式返回各個變數的s-w正態分佈檢驗,和整體的hz多元正態分佈檢驗結果,和乙個qq圖。注意需要檢驗每個類的正態性(這個方法好累啊)

下面檢驗協方差陣有沒有顯著差異

library

(heplots)

boxm

(iris[,-

5],iris$species)

若是沒有顯著差異,則直接用線性判別函式lda即可,這時就可以用上prior引數了。這裡就可以自己回判了,並且可以輸入測試集test看看(這裡沒給test)

library

(mass)

m <

-lda

(species~

.,prior=c(

1/3,

1/3,

1/3)

,data = iris)

z=predict

(m)table

(data.

frame

(z$class,iris$species)

)predict

(m,test)

有顯著差異的話就用二次判別函式qda

m1 <

-qda

(species~

.,prior=c(

1/4,

1/4,

1/2)

,data = iris)

R語言 文字分類 1

因專案需要,結合自身專業知識,故而接觸了r語言及一些常用分類器。記錄下自己這乙個多月的學習歷程。與起源於貝爾實驗室的s語言類似,r也是一種為統計計算和繪圖而生的語言和環境,它是一套開源的資料分析解決方案,由乙個龐大且活躍的全球性研究型社群維護。r是一門指令碼語言,在繪圖方面有著非常強的能力,它可以讓...

R語言常用包分類總結

常用包 資料處理 lubridata plyr reshape2,stringr,formatr,mcmc 機器學習 nnet,rpart,tree,party,lars,boost,e1071,bayestree,gafit,arules 視覺化包 ggplot2,lattice,googlevi...

R語言常用包分類總結

常用包 資料處理 lubridata plyr reshape2,stringr,formatr,mcmc 機器學習 nnet,rpart,tree,party,lars,boost,e1071,bayestree,gafit,arules 視覺化包 ggplot2,lattice,googlevi...