Machine Learing in Action

来源:互联网 发布:网络解锁助手1.0.9 编辑:程序博客网 时间:2024/06/05 08:21

机器学习两种策略

判别式模型

给定样本x,可通过直接建模P(c|x)来预测c,如决策树,BP神经网络,支持向量机

生成式模型

先对联合概率分布P(x,c)建模,再由此获得P(c|x)
(x为样本,c为类标记)

最小化分类错误率的贝叶斯最优分类器(推导略)

h(x)=argcϵymaxP(c|x)

(y=c1,c2,c3,c4,...cN)

即对每个样本x,选择能使后验概率P(c|x)最大的类别标记。其中,基于贝叶斯定理,P(c|x)可写为
P(c|x)=P(x,c)P(x)=P(c)P(x|c)P(x)

P(c)为类先验概率,P(x|c)是样本x相对于类标记c的类条件概率,P(x)为用于归一化的证据因子,对于给定样本x,证据因子P(x)与类标记无关。

朴素贝叶斯分类器

朴素贝叶斯分类器采用“属性条件独立性假设”,对已知类别,假设所有属性相互独立,即每个属性独立的对分类发生影响。
由于属性独立,式子可化为:

P(c|x)=P(x,c)P(x)=P(c)P(x|c)P(x)=P(c)P(x)i=1dP(xi|c)

dxixi

因为对于所有类别P(x)相同,所以,朴素贝叶斯分类器表达式
hnb(x)=argcϵymaxP(c)i=1dP(xi|c)

若有充足的独立同分布样本,可以估计出类先验概率P(c)
P(c)=Dc|D|

对离散属性,条件概率P(xi|c)可估计为,
P(xi|c)=Dc,xiDc

Dc,xiDcixi

对连续属性,可考虑概率密度函数……

朴素贝叶斯分类器代码片段

分类器训练函数

参数trainMatrix:
为文档矩阵
形如:
文档矩阵
参数trainCategory:
为每篇文档类别标签所构成的向量
形如:
类别向量

def trainNB0(trainMatrix,trainCategory):    numTrainDocs = len(trainMatrix)    numWords = len(trainMatrix[0])    #类先验概率P(c1)    pAbusive = sum(trainCategory)/float(numTrainDocs)    #如下两行为拉普拉斯修正(平滑处理)    p0Num = ones(numWords); p1Num = ones(numWords) #分子为1    p0Denom = 2.0; p1Denom = 2.0 #N=2.0表示训练集D中可能的类别数为2个(如侮辱性和非侮辱性)    for i in range(numTrainDocs):        if trainCategory[i] == 1:            p1Num += trainMatrix[i]            p1Denom += sum(trainMatrix[i])        else:            p0Num += trainMatrix[i]            p0Denom += sum(trainMatrix[i])    #第一类(书中为侮辱性词汇类)每个属性(对应书中的每个单词)估计条件概率P(xi/c1)所构成的向量    p1Vect = log(p1Num/p1Denom)    #第二类(书中为非侮辱性词汇类)每个属性(对应书中的每个单词)估计条件概率P(xi/c0)所构成的向量    p0Vect = log(p0Num/p0Denom)    return p0Vect,p1Vect,pAbusive

分类函数

'''vec2Classify:测试样本属性值向量p0Vec:第一类每个属性估计条件概率P(xi/c0)所构成的向量p1Vec:第二类每个属性估计条件概率P(xi/c1)所构成的向量pClass1:类先验概率P(c1)'''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

sum(vec2Classify * p1Vec)sum(vec2Classify * p0Vec)di=1P(xi|c1)di=1P(xi|c0)的对数形式,log(pClass1)log(1.0 - pClass1)为类先验概率P(c1)和P(c0)

0 0
原创粉丝点击