朴素贝叶斯决策论的核心思想:选择高概率对应的类别。
贝叶斯概率:先验概率 p ( c ) p(c) p(c) 和后验概率 p ( c ∣ x ) p(c|x) p(c∣x)
贝叶斯准则: p ( c ∣ x ) = p ( x ∣ c ) p ( c ) p ( x ) p(c|x) = \frac{p(x|c) p(c)}{p(x)} p(c∣x)=p(x)p(x∣c)p(c)
一 本章的核心是:
利用条件概率来分类
如果 p ( c 1 ∣ x , y ) > p ( c 2 ∣ x , y ) p(c_1|x,y) > p(c_2|x,y) p(c1∣x,y)>p(c2∣x,y) 那么属于类别c1
如果 p ( c 1 ∣ x , y ) < p ( c 2 ∣ x , y ) p(c_1|x,y) < p(c_2|x,y) p(c1∣x,y)<p(c2∣x,y) 那么属于类别c2
二 使用python进行文本分类
1 准备数据:从文本中构建词向量
- 词表(wordList)
[
[‘my’, ‘dog’, ‘has’, ‘flea’, ‘problems’, ‘help’, ‘please’],-------------(文档1)
[‘maybe’, ‘not’, ‘take’, ‘him’, ‘to’, ‘dog’, ‘park’, ‘stupid’],-----------(文档2)
… …------------------------------------------------------------------(文档 n)
] - 总词表(vocabList)
[‘my’, ‘dog’, ‘has’, ‘flea’, ‘problems’, ‘help’, ‘please’,‘maybe’, ‘not’, ‘take’, ‘him’, ‘to’, ‘park’, ‘stupid’…] (无重复单词) - 词向量 [0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,…](长度取决于vocabList)(setOfWords2Vec, bagOfWords2Vec)
词矩阵 trainMat - 类别标签集 classVec = [0,1,0,1,0,1](#1表示侮辱性文字,0表示正常言论)
- 以上词表中的文档与类别标签中的元素一一对应。
- 文档中的每个单词与词向量中的元素一一对应。
三 改进分类器
- “连乘为0”问题 =》 所有词的出现数初始为1,分母初始为2
- “下溢出”问题 =》取对数 log、
- 计算时忽略分母 p ( w ) p(w) p(w)
- 停用词
- 优化切分器
四 收集数据:导入RSS源
使用python 下载文本,可用RSS。
安装了anaconda的用户,可以直接在anaconda prompt 中使用以下命令行:
conda install feedparser
conda list
没有安装anaconda的用户,百度Universal Feed Parser找到相应的下载页面,使用
python setup.py install
使用feedparser:
import feedparser
ny=feedparser.parse(‘http://www.nasa.gov/rss/dyn/image_of_the_day.rss’)
ny[‘entries’]
len(ny[‘entries’])