- 朴素贝叶斯
- 一个特征或者单词出现的可能性与它和其他单词相邻没有关系
- 每个特征同等重要
- 朴素贝叶斯分类器通常有两种实现方式
- 基于贝努利模型实现
不考虑词在文档中出现的次数,只考虑出现与否,在这个意义上相当于假设词是等权重的
- 基于多项式模型实现
考虑词在文档中出现的次数
- Page61 在转换成矩阵的时候,可不可以在每个行向量后面再加一位,表明这个整体是1还是0? ( 是坏句子还是好句子)
>>> for postinDoc inlistOPosts:
... trainMat.append(bayes.setOfWords2Vec(myVocabList, postinDoc))
...
>>> p0V, p1V, pAb =bayes.trainNB0(trainMat, listClasses)
>>> pAb
0.5
>>> p0V
array([ 0.04166667, 0.08333333, 0.04166667, 0.04166667, 0. ,
0. , 0.04166667, 0.04166667, 0.04166667, 0.125 ,
0.04166667, 0.04166667, 0.04166667, 0.04166667, 0.04166667,
0. , 0. , 0. , 0. , 0.04166667,
0.04166667, 0. , 0. , 0.04166667, 0. ,
0.04166667, 0.04166667, 0.04166667, 0.04166667, 0. ,
0. , 0.04166667])
>>> p1V
array([ 0. , 0.05263158, 0.10526316, 0. , 0.05263158,
0.10526316, 0.05263158, 0.05263158, 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0.15789474, 0.05263158, 0.05263158, 0.05263158, 0. ,
0. , 0.05263158, 0.05263158, 0. , 0.05263158,
0. , 0. , 0. , 0. , 0.05263158,
0.05263158, 0. ])
>>> myVocabList
['is', 'him', 'dog', 'streak', 'food', 'worthless', 'stop', 'to','ate', 'my', 'so', 'dalmation', 'flea', 'I', 'licks', 'stupid', 'buying', 'quit', 'take', 'help', 'has','posting', 'garbage', 'please', 'not', 'problems', 'cute', 'mr', 'how', 'park','maybe', 'love']
这个p0V, p1V求出的是广泛的每个词在字典里,被划分到“好人”和“坏人”的概率。 (基于我们人工标注的那个list (1,0,1,0,1,0), 比如看 p1V中概率最高的那个是0.157, 通过字典list找到对应索引位置的词语,是stupid)
>>> reload(bay