R语言 朴素贝叶斯分类预测

#朴素贝叶斯预测分类问题代码

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

你可能感兴趣的:(R语言)