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所對應的樣本構成訓練集,並剔除第1、3、12個變數
miete_test<-miete[,c(-1,-3,-12)][-sub_train$ID_unit,] #獲取如上ID_unit所對應的樣本構成測試集,並剔除第1、3、12個變數
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