朴素贝叶斯

朴素贝叶斯概论

优点:在数据较小的情况下仍然有效,可以处理多类别问题
缺点:对于输入数据的准备方式较为敏感
使用数据类型:标称型数据

工作原理

朴素贝叶斯是贝叶斯决策理论的一部分,我们会选择高概率对应的类别,这是贝叶斯决策论的核心思想,即选择具有最高概率的决策
贝叶斯准则:p(c|x)=p(x|c)p©/p(x)

使用条件概率来分类

如果p1(x,y)>p2(x,y),那么属于类别1
如果p1(x,y)<p2(x,y),那么属于类别2

可以转化为

如果p(c1|x,y)>p(c2|x,y),那么属于c1,
如果p(c1|x,y)<p(c2|x,y),那么属于c2,

一般过程

1.收集数据:可以使用任何方法
2.准备数据:需要数值型或者布尔型数据
3.分析数据:有大量特征时,绘制特征作用不大,此时使用直方图效果更好
4.训练算法:计算不同的独立特征的条件概率
5.测试算法:测试错误率
6.使用算法:一个常见的朴素贝叶斯应用是文档分类。可以在任意的分类场景中使用朴素贝叶斯分类器,不一定非要文本。

词表到向量的转化函数
 def createVocabList(dataSet):
       vocabSet = set ( [ ] )
       #创建一个空集
       for document in dataSet:
           vocabSet = vocabset | set(document)
           #创建两个集合的并集
       return list(vocabSet)
 def setOfWords2Vec(vocabList, inputSet):
 returnVec = [0] *len(vocabList)
 #创建一个其中所含元素都为0的向量
 for word in inputSet:
     if word in vocabList:
        returnVec[vocabList,index(word)] = 1
      else: print "the word: %s is not in my vocabulary!" % word
 return returnVec
从词向量计算概率

伪代码:

计算每个类别中的文档数目
对每篇训练文档:
       对每个类别:
              如果词条出现文档中→增加该词条的计数值
              增加所有词条的计数值
       对每个类别:
              对每个词条:
                      将该词条的数目除以总词条的数目得到条件概率
       返回每个类别的条件概率
朴素贝叶斯词袋模型
def bagOfWords2VecMN(vocabList, inputSet):
       returnVec = [0] * len(vocabList)
       for word in inptSet:
            if word in vocabList:
               returnVec[vocabList,infdex(word)] += 1
       return returnVec
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值