1. 程式人生 > 其它 >naiveBayes(樸素貝葉斯)演算法及案例分析

naiveBayes(樸素貝葉斯)演算法及案例分析

naiveBayes(樸素貝葉斯)演算法的R語言實現

#步驟1 載入e1071

library(e1071)

library(printr)

#步驟2 iris資料集分為訓練集和測試集

index<-sample(1:nrow(iris),nrow(iris)*3/4)

iris.train<-iris[index,]

iris.test<-iris[-index,]

#步驟3 使用拉普拉斯平滑預測

model<-naiveBayes(Species~.,data=iris.train,laplace=3)

#步驟4 用模型對測試集做測試

pred<-predict(model,iris.test[,1:dim(iris)[2]-1])

dim(iris)

 

dim(iris)[2]

 

#步驟5 結果顯示

table(pred,iris.test$Species) #混淆矩陣

 

Navie Bayes演算法案例分析

library(klaR)

data(miete)

library(sampling)

n<-round(2/3*nrow(miete)/5)  #按照訓練集佔資料總量2/3計算每一等級應抽取的樣本數

sub_train<-strata(miete,stratanames="nmkat",size=rep(n,5),method="srswor")  #nmkat變數的5個等級劃分層級,進行分層抽樣

miete_train<-miete[,c(-1,-3,-12)][sub_train$ID_unit,]  #獲取如上ID_unit所對應的樣本構成訓練集,並剔除第1312個變數

miete_test<-miete[,c(-1,-3,-12)][-sub_train$ID_unit,]  #獲取如上ID_unit所對應的樣本構成測試集,並剔除第1312個變數

m_Bayes<-naiveBayes(nmkat~.,miete_train)  #建立Navie Bayes模型

m_Bayes$apriori  #得到miete資料集的分佈情況(先驗概率)

m_Bayes$tables #tables項中儲存了所有變數在各類被下的條件概率

 

......

 

m_Bayes2<-NaiveBayes(miete_train[,-12],miete_train[,12])  #建立NaiveBayes模型

Bayes2_pre<-predict(m_Bayes2,miete_test)  #miete_test資料集進行預測

Bayes2_pre

 

 

 

table(miete_test$nmkat,Bayes2_pre$class) #預測結果的混淆矩陣

 

E_Bayes2<-sum(as.numeric(as.numeric(Bayes2_pre$class)!=as.numeric(miete_test$nmkat)))/nrow(miete_test)

E_Bayes2