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