机器学习实战(4)朴素贝叶斯学习笔记_20170707
2017-07-07 14:35
253 查看
机器学习之朴素贝叶斯实战:
朴素贝叶斯————基于贝叶斯定理与特征条件独立假设的分类方法
对于给定数据集,首先计算基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入x,利用贝叶斯定理求出
后验概率最大的输出y。
用p1(x,y)表示数据(x,y)属于类别1的概率
用p2(x,y)表示数据(x,y)属于类别2的概率
如果p1>p2,那么类别为1;反之,类别为2
推广: argmax p(ci | x,y),使后验概率最大的ci,则(x,y)就属于ci类
其中源码第49~55行理解:
def classifyNB(vec2Classify, p0Vec, p1Vec, pClass1):
p1 = sum(vec2Classify * p1Vec) + log(pClass1)
p0 = sum(vec2Classify * p0Vec) + log(1.0 - pClass1)
if p1 > p0:
return 1
else:
return 0这是贝叶斯分类函数的代码
四个输入:要分类的向量vec2Classify 以及贝叶斯训练函数计算得到的三个概率值;
其中vec2Classify得到方式
testEntry = ['love', 'my', 'dalmation'] # 测试样本
thisDoc = array(setOfWords2Vec(myVocabList, testEntry)) # setOfWordsVec函数用来检查测试样本是否在训练的词组中
print testEntry,'classified as: ',classifyNB(thisDoc,p0V,p1V,pAb) # thisDoc = vec2Classify 这时是一个{0,1}集合的数组接下来解释 p1和p0的计算
p1 = sum(vec2Classify * p1Vec) + log(pClass1)
p0 = sum(vec2Classify * p0Vec) + log(1.0 - pClass1)已知:p( ci | w ) = p( w | ci ) * p( ci ) / p( w )
因为p( w )是定量,所以要求使之值最大的ci,即求p( w | ci ) * p ( ci )的最大值
分类函数中 ci = {0,1} 由于朴素贝叶斯假设所有特征都相互独立,则有
p( w | ci) = p( w0, w1, ... , wn | ci) = p( w0 | ci ) * p( w1 | ci ) * .... * p( wn | ci )
取对数(不影响函数单调性):
ln p ( w | ci) = sum ( ln p( wn | ci )) ( n = 1, 2, .... )
所有原式取对数,ln( p( w | ci) * p( ci ) ) = sum ( ln p( wn | ci) ) + ln p( ci )
p(1) = pClass1 所以 p(0) = 1 - pClass1
朴素贝叶斯————基于贝叶斯定理与特征条件独立假设的分类方法
对于给定数据集,首先计算基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入x,利用贝叶斯定理求出
后验概率最大的输出y。
用p1(x,y)表示数据(x,y)属于类别1的概率
用p2(x,y)表示数据(x,y)属于类别2的概率
如果p1>p2,那么类别为1;反之,类别为2
推广: argmax p(ci | x,y),使后验概率最大的ci,则(x,y)就属于ci类
其中源码第49~55行理解:
def classifyNB(vec2Classify, p0Vec, p1Vec, pClass1):
p1 = sum(vec2Classify * p1Vec) + log(pClass1)
p0 = sum(vec2Classify * p0Vec) + log(1.0 - pClass1)
if p1 > p0:
return 1
else:
return 0这是贝叶斯分类函数的代码
四个输入:要分类的向量vec2Classify 以及贝叶斯训练函数计算得到的三个概率值;
其中vec2Classify得到方式
testEntry = ['love', 'my', 'dalmation'] # 测试样本
thisDoc = array(setOfWords2Vec(myVocabList, testEntry)) # setOfWordsVec函数用来检查测试样本是否在训练的词组中
print testEntry,'classified as: ',classifyNB(thisDoc,p0V,p1V,pAb) # thisDoc = vec2Classify 这时是一个{0,1}集合的数组接下来解释 p1和p0的计算
p1 = sum(vec2Classify * p1Vec) + log(pClass1)
p0 = sum(vec2Classify * p0Vec) + log(1.0 - pClass1)已知:p( ci | w ) = p( w | ci ) * p( ci ) / p( w )
因为p( w )是定量,所以要求使之值最大的ci,即求p( w | ci ) * p ( ci )的最大值
分类函数中 ci = {0,1} 由于朴素贝叶斯假设所有特征都相互独立,则有
p( w | ci) = p( w0, w1, ... , wn | ci) = p( w0 | ci ) * p( w1 | ci ) * .... * p( wn | ci )
取对数(不影响函数单调性):
ln p ( w | ci) = sum ( ln p( wn | ci )) ( n = 1, 2, .... )
所有原式取对数,ln( p( w | ci) * p( ci ) ) = sum ( ln p( wn | ci) ) + ln p( ci )
p(1) = pClass1 所以 p(0) = 1 - pClass1
相关文章推荐
- 机器学习实战学习笔记8——朴素贝叶斯
- 机器学习实战笔记(3.1)-朴素贝叶斯算法(原理分析)
- 机器学习实战笔记4(朴素贝叶斯)
- 机器学习实战笔记4(朴素贝叶斯)
- 机器学习实战笔记——KNN算法
- 机器学习实战-学习笔记-第十四章
- 机器学习实战python版第四章基于概率论的分类方法 朴素贝叶斯
- 机器学习实战笔记 k-近邻算法
- 机器学习实战学习笔记2——决策树算法
- 机器学习实战笔记之非均衡分类问题
- 机器学习实战学习笔记 一 k-近邻算法
- 机器学习实战笔记(四):Logist线性回归算法的Python实现
- 机器学习实战-学习笔记-第十三章
- 机器学习实战笔记3(决策树与随机森林)
- 机器学习实战笔记9(Apriori算法)
- 机器学习实战笔记(Python实现)-01-机器学习实战
- 机器学习实战笔记之一(调试NumPy)
- 机器学习实战笔记之三(决策树)
- 机器学习实战笔记(二):K邻近算法
- 机器学习实战笔记:KNN