统计数据分析

朴素贝叶斯分类器 Native Bayes

2020-02-19  本文已影响0人  MJades

贝叶斯方法把计算“具有某特征的条件下属于某类”的概率转换成需要计算“属于某类的条件下具有某特征”的概率,属于有监督学习。
朴素贝叶斯这种学习方法是基于条件概率进行的,通过给定已知的其他东西,来推断一件事情发生的可能性。假定在一个类中,某个特征存在(或不存在)与其他特征存在(或不存在)没有任何关系。

其流程如下:

  1. 准备阶段, 根据具体情况确定特征属性, 对每个特征属性进行适当划分, 然后由人工对一部分待分类项进行分类,形成训练样本集合。这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。这一阶段是整个朴素贝叶斯分类中唯一需要人工完成的阶段, 其质量对整个过程将有重要影响,分类器的质量很大程度上由特征属性、特征属性划分及训练样本质量决定。

  2. 分类器训练阶段, 这个阶段的任务就是生成分类器,主要工作是计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计, 并将结果记录。 其输入是特征属性和训练样本,输出是分类器。这一阶段是机械性阶段, 根据前面讨论的公式可以由程序自动计算完成。

  3. 应用阶段。 这个阶段的任务是使用分类器对待分类项进行分类, 其输入是分类器和待分类项, 输出是待分类项与类别的映射关系。这一阶段也是机械性阶段, 由程序完成。

# 准备data
data("iris")
n<-nrow(iris)
ntrain<-round(n*0.6)
set.seed(333)
tindex<-sample(n,ntrain)
train_iris<-iris[tindex,]
test_iris<-iris[-tindex,]
str(train_iris)

# 朴素贝叶斯分类器
library(e1071)
nb1<-naiveBayes(Species~.,data=train_iris)
nb1 
nb1$apriori
nb1$tables$Petal.Length
table(train_iris$Species)
# 画预测变量的高斯分布
plot(function(x)dnorm(x,1.48,0.1349329),0,8,lty=1,main="Petal length dis")
curve(dnorm(x,4.306897,0.3890749),add=TRUE,lty=2)
curve(dnorm(x,5.577419,0.5321088),add=TRUE,lty=5)
legend("topright",legend=c("setosa","versicolor","virginica"),lty=c(1,2,5),bty="o")
# bty可以取6种字符,分别为“o”、“l”、“7”、“c”、“u”、“]”。这些字符代 表6种边框。

# 对test样本进行预测
prediction<-predict(nb1,test_iris[,-5], type=class) 
# type默认是class,若是raw表示具体概率;
xtab<-table(prediction,test_iris$Species)
xtab
nb1 先验概率,类分布是离散型变量的条件下,和table结果一样~
预测结果展示,95%的准确率 三个类关联高斯分布的平均值(第一列)和标准差(第二列)
正态分布图

e1071包参数介绍


naiveBayes predict

参考

  1. https://www.jianshu.com/p/4d5e00ae2cb6
  2. https://blog.csdn.net/qiu_zhi_liao/article/details/90671932
  3. https://blog.csdn.net/sinat_30353259/article/details/80932111
  4. http://www.360doc.com/content/17/0220/15/39146847_630571291.shtml
  5. https://www.cnblogs.com/runner-ljt/p/4589017.html
上一篇 下一篇

猜你喜欢

热点阅读