1.基于贝叶斯决策理论的分类方法
2.使用朴素贝叶斯进行文档分类
使用Python进行文本分类
1.准备数据:从文本中构建词向量
1 | def loadDataSet(): |
1 | listOPosts,listClasses = loadDataSet() |
1 | 某个文档: |
2.训练算法:从词向量计算概率
1 | #朴素贝叶斯分类器训练函数,trainMatrix表示由多个词条在词汇表中出现的次数组成的矩阵,trainCategory表示某个词条出不出现 |
1 | from numpy import * |
1 | 词汇表: |
3.测试算法:根据现实情况修改分类器
朴素贝叶斯分类函数
1 | def classifyNB(vec2Classify, p0Vec, p1Vec, pClass1): #需要分类的向量vec2Classify,pClass1是类别的概率 |
1 | ['love', 'my', 'dalmation'] 分类为: 0 |
4.准备数据:文档词袋模型
1 | def bagOfWords2VecMN(vocabList, inputSet): #基于词袋模型的朴素贝叶斯,遇到一个单词时,增加词向量中的对应值 |
示例:使用朴素贝叶斯过滤垃圾邮件
1.准备数据:切分文本
1 | def textParse(bigString): #输入字符串,切分字符串成列表 |
1 | mySent = 'This book is the best book on Python' |
1 | ['this', 'book', 'the', 'best', 'book', 'python'] |
切分一封完整的电子邮件的实际处理结果
1 | import re |
2.测试算法:使用朴素贝叶斯进行交叉验证
1 | def spamTest(): |
1 | classification error ['yeah', 'ready', 'may', 'not', 'here', 'because', 'jar', 'jar', 'has', 'plane', 'tickets', 'germany', 'for'] |
示例:使用朴素贝叶斯分类器从个人广告中获取区域倾向
1.收集数据:导入RSS源及高频次去除函数
1 | def calcMostFreq(vocabList,fullText): #计算出现的频率 |
2.分析数据:显示地域相关的用词
1 | def getTopWords(ny,sf): #最具表征性的词汇显示函数 |