(1) 朴素贝叶斯算法
设每个数据样本用一个n维特征向量来描述n个属性的值,即:X={x1,x2,…,xn},假定有m个类,分别用C1, C2,…,Cm表示。给定一个未知的数据样本X(即没有类标号),若朴素贝叶斯分类法将未知的样本X分配给类Ci,则一定是
P(Ci|X)>P(Cj|X) 1≤j≤m,j≠i
根据贝叶斯定理
由于P(X)对于所有类为常数,最大化后验概率P(Ci|X)可转化为最大化先验概率P(X|Ci)P(Ci)。如果训练数据集有许多属性和元组,计算P(X|Ci)的开销可能非常大,为此,通常假设各属性的取值互相独立,这样
先验概率P(x1|Ci),P(x2|Ci),…,P(xn|Ci)可以从训练数据集求得。
根据此方法,对一个未知类别的样本X,可以先分别计算出X属于每一个类别Ci的概率P(X|Ci)P(Ci),然后选择其中概率最大的类别作为其类别。
朴素贝叶斯算法成立的前提是各属性之间互相独立。当数据集满足这种独立性假设时,分类的准确度较高,否则可能较低。另外,该算法没有分类规则输出。
(2) TAN算法
TAN算法通过发现属性对之间的依赖关系来降低NB中任意属性之间独立的假设。它是在NB网络结构的基础上增加属性对之间的关联(边)来实现的。
实现方法是:用结点表示属性,用有向边表示属性之间的依赖关系,把类别属性作为根结点,其余所有属性都作为它的子节点。通常,用虚线代表NB所需的边,用实线代表新增的边。属性Ai与Aj之间的边意味着属性Ai对类别变量C的影响还取决于属性Aj的取值。
这些增加的边需满足下列条件:类别变量没有双亲结点,每个属性有一个类别变量双亲结点和最多另外一个属性作为其双亲结点。
找到这组关联边之后,就可以计算一组随机变量的联合概率分布如下:
其中ΠAi代表的是Ai的双亲结点。由于在TAN算法中考虑了n个属性中(n-1)个两两属性之间的关联性,该算法对属性之间独立性的假设有了一定程度的降低,但是属性之间可能存
在更多其它的关联性仍没有考虑,因此其适用范围仍然受到限制。
贝叶斯分类 实例
First Step
Find Classes:
C1: buys_computer = ‘yes’
C2: buys_computer = ‘no’
Second Step
Find P(C1) and P(C2)
P( buys_computer = “yes”) = 9/14 = 0.643
P( buys_computer = “no”) = 5/14= 0.357
Third Step
Compute P (X|C) for each class :
P (age = “Youth” / buys_computer = “yes”) = 2/9 = 0.222
P (age = “Youth” / buys_computer = “no”) = 3/5 = 0.6
P (income = “medium” / buys_computer = “yes”) = 4/9 = 0.444
P (income = “medium” / buys_computer = “no”) = 2/5 = 0.4
P (student = “yes” / buys_computer = “yes) = 6/9 = 0.667
P (student = “yes” / buys_computer = “no”) = 1/5 = 0.2
P (credit_rating = “fair” / buys_computer = “yes”) = 6/9 = 0.667
P (credit_rating = “fair” / buys_computer = “no”) = 2/5 = 0.4
Fourth Step .
Find P(X|Ci) :
For C1: Multiply all the probabilities that belong to class “yes”
P(X|buys_computer = “yes”) = 0.222 x 0.444 x 0.667 x 0.667=.044
Similarly for “class = no”
P(X|buys_computer = “no”) = 0.6 x 0.4 x 0.2 x 0.4 = 0.019
Finally ,
find …… P(X|Ci)*P(Ci) ……. for each class
P(X|buys_computer = “yes”) * P(buys_computer = “yes”) = 0.028
P(X|buys_computer = “no”) * P(buys_computer = “no”) = 0.007
参考:
http://www.cnblogs.com/phinecos/archive/2008/10/21/1315948.html
http://summerbell.iteye.com/blog/392459
http://blog.csdn.net/DL88250/archive/2008/02/20/2108164.aspx
http://www.cnblogs.com/waemz/archive/2009/02/25/1397647.html
分享到:
相关推荐
贝叶斯实现言论过滤器、过滤垃圾邮箱、新浪新闻分类
模式识别,贝叶斯实例,语言MATLAB,代码实例
机器学习-贝叶斯-西瓜分类 对代码的每一行进行了注解,适合初学者使用,主要代码来源是百度ai社区,只是对其进行了注解
资源中包括决策树分类算法、朴素贝叶斯分类算法、人工神经网络分类算法的代码(.ipynb,.py)和案例股票价格波动分析的数据(.csv),建议使用jupyter notebook打开.ipynb文件,体验更佳 1、资源配合博文《【python...
使用贝叶斯分类器进行判断文章类别,其中使用了斯密斯smoothing方法,课程作业,自己编写的matlab源码,直接运行BayesClassifier即可,由于数据量庞大,大概需要运行1分钟左右
实现朴素贝叶斯分类器算法基本功能,代码有注释,还包括一个垃圾邮件过滤的实例。另外我这次用的是python2.7版,如果用python3的可能需要根据提示修改几个语法(sorted函数的参数)。
训练此类分类器的算法不是单一的,而是基于共同原则的一系列算法:所有朴素贝叶斯分类器都假设特定特征的值独立于任何其他特征的值,给定类变量。例如,如果一个水果是红色的、圆形的、直径约 10 厘米,则可以认为它...
实验描述: 对指定数据集进行分类问题的...数据集: balance-scale.data(见附件一) ,已有数据集构建贝叶斯分类器。 数据包括四个属性:五个属性值 第一个属性值表示样本的类别号,其他四个属性为四个不同的特征值。
朴素贝叶斯分类器 MATLAB 源代码,里面含有使用实例,用的是 UCI 的 mushroom 数据集。 分类器详细介绍见: http://blog.csdn.net/yunduanmuxue/article/details/39693917
本文实例讲述了朴素贝叶斯分类算法原理与Python实现与使用方法。分享给大家供大家参考,具体如下: 朴素贝叶斯分类算法 1、朴素贝叶斯分类算法原理 1.1、概述 贝叶斯分类算法是一大类分类算法的总称 贝叶斯分类算法...
这是一个简单的贝叶斯分类器,java语言实现,有具体的实例验证,输入和输出数据
主要介绍了Python实现的朴素贝叶斯分类器,结合具体实例形式分析了基于Python实现的朴素贝叶斯分类器相关定义与使用技巧,需要的朋友可以参考下
编写的关于三维点云的朴素贝叶斯分类,能够根据训练实例,分成不同类别,是一种监督分类
详细讲解朴素贝叶斯分类,理论与实例相结合
贝叶斯分类器的分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。贝叶斯分类器是最小错误率意义上的优化。在风险相同时,...
开发了针对文件按邮件的数据函数,以及手动实现了朴素贝叶斯分类方法,和最终结果的可视化。 数据中一共有6000多个邮件,其中三分之二为非垃圾邮件。 对R语言感兴趣的同学可以下载数据代码使用,数据处理部分...
该论文中详细介绍了基于朴素贝叶斯的垃圾邮件分类过程,以及五折交叉验证的评价指标,并包含完整的代码,python格式,是一个学习朴素贝叶斯方法不错的实例。
本文实例为大家分享了Python朴素贝叶斯实例代码,供大家参考,具体内容如下 #-*- coding: utf-8 -*- #添加中文注释 from numpy import * #过滤网站的恶意留言 #样本数据 def loadDataSet(): postingList=[['my', '...
本文实例讲述了Python实现朴素贝叶斯分类器的方法。分享给大家供大家参考,具体如下: 贝叶斯定理 贝叶斯定理是通过对观测值概率分布的主观判断(即先验概率)进行修正的定理,在概率论中具有重要地位。 先验概率...