R语言 奈何贝叶斯分类器

R语言 奈何贝叶斯分类器

Naive Bayes是R编程中的一种监督式非线性分类算法。奈何贝叶斯分类器是一个简单的概率分类器系列,它基于应用贝叶定理和特征或变量之间的强(奈何)独立性假设。Naive Bayes算法之所以被称为 “Naive”,是因为它假设某个特征的出现与其他特征的出现无关。

理论

奈何贝叶斯算法是基于贝叶斯定理的。贝叶斯定理给出了在另一事件B发生的情况下事件A的条件概率。

R编程中的奈何贝叶斯分类器

其中,

P(A|B) = 给定B的A的条件概率。

P(B|A) = 给定A的B的条件概率。

P(A) = 事件A的概率。

P(B) = 事件B的概率。

对于许多预测者,我们可以把后验概率表述为:

p(a|b) = p(b1|a) * p(b2|a) * p(b3|a) * p(b4|a) …

例子

考虑一个样本空间。
{hh, ht, th, tt}。
其中,
H:头部
T:尾巴

P(第二枚硬币是头 = P(A|B)
第一枚硬币是尾巴) = P(A|B)
= [P(B|A) * P(A)] / P(B)
= [P(第一枚硬币是尾巴,给定第二枚硬币是头) *
P(第二枚硬币是头)] / P(b) / P(第一枚硬币是尾巴)
= [(1/2) * (1/2)] / (1/2)
= (1/2)
= 0.5

数据集

鸢尾花 数据集由3种鸢尾花(Iris setosa, Iris virginica, Iris versicolor)各50个样本组成,是英国统计学家和生物学家Ronald Fisher在其1936年的论文《多重测量在分类学问题中的应用》中提出的多变量数据集。从每个样本中测量了四个特征,即萼片和花瓣的长度和宽度,根据这四个特征的组合,Fisher开发了一个线性判别模型来区分物种。

# Loading data
data(iris)
  
# Structure
str(iris)
R

在数据集上执行奈何贝叶斯算法

在包括11个人和6个变量或属性的数据集上使用Naive Bayes算法,

# Installing Packages
install.packages("e1071")
install.packages("caTools")
install.packages("caret")
 
# Loading package
library(e1071)
library(caTools)
library(caret)
 
# Splitting data into train
# and test data
split <- sample.split(iris, SplitRatio = 0.7)
train_cl <- subset(iris, split == "TRUE")
test_cl <- subset(iris, split == "FALSE")
 
# Feature Scaling
train_scale <- scale(train_cl[, 1:4])
test_scale <- scale(test_cl[, 1:4])
 
# Fitting Naive Bayes Model
# to training dataset
set.seed(120)  # Setting Seed
classifier_cl <- naiveBayes(Species ~ ., data = train_cl)
classifier_cl
 
# Predicting on test data'
y_pred <- predict(classifier_cl, newdata = test_cl)
 
# Confusion Matrix
cm <- table(test_cl$Species, y_pred)
cm
 
# Model Evaluation
confusionMatrix(cm)
R

输出

  • 模型 classifier_cl:

R编程中的奈何贝叶斯分类器

  • 每个特征或变量的条件概率是由模型单独创建的。还计算了priori概率,表明我们的数据分布。
  • 混淆矩阵:

R编程中的奈何贝叶斯分类器

  • 因此,有20个Setosa被正确分类为Setosa。在16个Versicolor中,15个Versicolor被正确分类为Versicolor,1个被分类为virginica。在24个Virginica中,19个Virginica被正确分类为Virginica,5个被分类为Versicolor。
  • 模型评估:

R编程中的奈何贝叶斯分类器

  • 该模型达到了90%的准确率,P值小于1。通过敏感性、特异性和平衡性的准确率,该模型的建立是好的。

因此,Naive Bayes被广泛用于情感分析、文档分类、电子邮件垃圾邮件过滤等行业。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册