• 朴素贝叶斯


    朴素贝叶斯法:对于给定训练集,首先基于特征条件独立假设学习 输入输出的联合分布,然后基于此模型,对给定的x,利用贝叶斯定理求出后验概率最大的输出y。

    我理解为假设各项特征相互独立,计算该特征分别在两个类别中出现的概率。待分类样本有多个特征,分别计算这些特征在每个类别出现概率之积,那个乘积大,该样本被分为此类别的概率即为最大

    几个重要的公式:

    具体方法:

    关键代码:

     1 def trainNB0(trainMatrix, trainCategory):  #首要先将构造出训练数据集,将单词转换成频率相关的数组,此段代码忽略该过程
     2     numTrainDocs = len(trainMatrix)
     3     numWords = len(trainMatrix[0])
     4     pAbusive = sum(trainCategory) / float(numTrainDocs)  
     5     p0Num = ones(numWords);  #两类词组分别出现的概率向量组
     6     p1Num = ones(numWords)  # change to ones()
     7     p0Denom = 2.0;                
     8     p1Denom = 2.0  # change to 2.0
     9     for i in range(numTrainDocs):    #分别计算某单词的先验概率,即分别在两类中出现的概率
    10         if trainCategory[i] == 1:
    11             p1Num += trainMatrix[i]
    12             p1Denom += sum(trainMatrix[i])
    13         else:
    14             p0Num += trainMatrix[i]
    15             p0Denom += sum(trainMatrix[i])
    16     p1Vect = log(p1Num / p1Denom)  # change to log()
    17     p0Vect = log(p0Num / p0Denom)  # change to log()
    18     return p0Vect, p1Vect, pAbusive #返回某单词在两个类别出现的概率

    上式概率计算部分关键代码处理完毕。

    对于sklearn包,相应的API为GaussianNB,高斯朴素贝叶斯,MultinomialNB,多项式朴素贝叶斯,BernoulliNB伯努利朴素贝叶斯方法。同时要学会该包中将单词转换为数字标记的方法,TF-IDF。学会这几个API接口与基本就能使用该方法了

  • 相关阅读:
    在eclipse中安装 Activiti Designer插件
    Maven settings.xml配置(指定本地仓库、阿里云镜像设置)
    unity调用MMBilling_2.4.2 Android SDK.
    unity与Android相互调用
    Unity3D研究院之与Android相互传递消息
    Unity3D研究院之打开Activity与调用JAVA代码传递参数
    Objec c 字符串比较
    判断不同IOS设备
    Unity3D研究院之IOS本地消息通知LocalNotification的使用
    【Unity3D】iOS 推送实现
  • 原文地址:https://www.cnblogs.com/the-home-of-123/p/9174260.html
Copyright © 2020-2023  润新知