• 机器学习实战-边学边读python代码(5)


    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

    注意:

    p1Vect = log(p1Num/p1Denom)
    p0Vect = log(p0Num/p0Denom)

    >>> p0V
    array([ 0.04166667, 0.04166667, 0.04166667, 0. , 0. ,
    .
    .
    0.04166667, 0. , 0.04166667, 0. , 0.04166667,
    0.04166667, 0.125 ])
    >>> p1V
    array([ 0. , 0. , 0. , 0.05263158, 0.05263158,
    .
    .
    0. , 0.15789474, 0. , 0.05263158, 0. ,
    0. , 0. ])

    p(w0,w1,w2..wN|ci) = p(w0|ci)p(w1|ci)p(w2|ci)...p(wN|ci),

    在本例中,ci分为侮辱性和非侮辱性两个类别,而w0,w1,w2..wN为单词向量(文档中所有单词的汇总),p0V和p1V是由训练文档计算出来的,如果文档为侮辱性文档,统计文档中各个词语在单词向量中出现情况,计算出概率向量p0V,同样计算出p1V.

    贝叶斯定理如下:

    p(ci|w)

    = p(w|ci)p(ci)/p(w)

    =p(w0,w1,w2..wN|ci)p(ci)/p(w)

    =p(w0|ci)p(w1|ci)p(w2|ci)..p(wN|ci)p(ci)/p(w)

    计算一个特定的文档w属于c0(侮辱性文档)或者c1(非侮辱性文档),统计这篇文档中各个单词在两个不同类别中的出现概率,由贝叶斯公式进行量化,也就是把特定文档中的每个单词在p0V或者p1V中找到对应的单词概率,把这些概率相乘,即p(w0|ci)p(w1|ci)p(w2|ci)..p(wN|ci),再乘以p(ci),最后的结果得出两个概率值,概率大的即为特定文档最后的类别。

  • 相关阅读:
    java实现前n项和,要求不使用循环、乘除法、判断标识
    java 线程池 带返回值
    java 多线程 数据通信
    jedis使用分布式锁
    记一次自定义管理工厂使用spring自动装载bean
    面试题玩数组
    记一次随便排序算法
    九九乘法表打印记一次al面试
    多线程操作共享变量顺序输出abc 记一次al面试题
    博客迁移
  • 原文地址:https://www.cnblogs.com/harlanc/p/5049446.html
Copyright © 2020-2023  润新知