#朴素贝叶斯预测分类问题代码
install.packages("e1071") #下载包
library(e1071) #加载包
classifier=naiveBayes(iris[,1:4],iris[,5]) #构建分类器
table(predict(classifier,iris[,-5]),iris[,5]) #生成混淆矩阵
classifier #查看先验概率和各特征变量与鸢尾花品种的条件概率
set.seed(2019) #设定随机种子
index=sample(x=2,size=nrow(iris),replace=TRUE,prob=c(0.8,0.2)) #按照80%和20%比例划分训练集和测试集
iris.Train=iris[index==1,] #训练集
iris.Test=iris[index==2,] #测试集
dim(iris.Train) #查看训练集的大小(行和列)
dim(iris.Test) #查看测试集的大小
class1=naiveBayes(iris.Train[,1:4],iris.Train[,5]) #分类器
table(predict(class1,iris.Test[,-5]),iris.Test[,5]) #测试集预测效果
#软件结果展示
> library(e1071) #加载包
Warning message:
程辑包‘e1071’是用R版本3.2.5 来建造的
> classifier=naiveBayes(iris[,1:4],iris[,5]) #构建分类器
> table(predict(classifier,iris[,-5]),iris[,5]) #生成混淆矩阵
setosa versicolor virginica
setosa 50 0 0
versicolor 0 47 3
virginica 0 3 47
> classifier #查看先验概率和各特征变量与鸢尾花品种的条件概率
Naive Bayes Classifier for Discrete Predictors
Call:
naiveBayes.default(x = iris[, 1:4], y = iris[, 5])
A-priori probabilities:
iris[, 5]
setosa versicolor virginica
0.3333333 0.3333333 0.3333333
Conditional probabilities:
Sepal.Length
iris[, 5] [,1] [,2]
setosa 5.006 0.3524897
versicolor 5.936 0.5161711
virginica 6.588 0.6358796
Sepal.Width
iris[, 5] [,1] [,2]
setosa 3.428 0.3790644
versicolor 2.770 0.3137983
virginica 2.974 0.3224966
Petal.Length
iris[, 5] [,1] [,2]
setosa 1.462 0.1736640
versicolor 4.260 0.4699110
virginica 5.552 0.5518947
Petal.Width
iris[, 5] [,1] [,2]
setosa 0.246 0.1053856
versicolor 1.326 0.1977527
virginica 2.026 0.2746501
> set.seed(2019) #设定随机种子
> index=sample(x=2,size=nrow(iris),replace=TRUE,prob=c(0.8,0.2)) #按照80%和20%比例划分训练集和测试集
> iris.Train=iris[index==1,] #训练集
> iris.Test=iris[index==2,] #测试集
> dim(iris.Train) #查看训练集的大小(行和列)
[1] 121 5
> dim(iris.Test) #查看测试集的大小
[1] 29 5
> class1=naiveBayes(iris.Train[,1:4],iris.Train[,5]) #分类器
> table(predict(class1,iris.Test[,-5]),iris.Test[,5]) #测试集预测效果,准确率100%
setosa versicolor virginica
setosa 8 0 0
versicolor 0 11 0
virginica 0 0 10