贝叶斯
朴素贝叶斯的一般过程
(1) 收集数据:可以使用任何方法。本章使用RSS源。
(2) 准备数据:需要数值型或者布尔型数据。
(3) 分析数据:有大量特征时,绘制特征作用不大,此时使用直方图效果更好。
(4) 训练算法:计算不同的独立特征的条件概率。
(5) 测试算法:计算错误率。
(6) 使用算法:一个常见的朴素贝叶斯应用是文档分类。可以在任意的分类场景中使用朴
素贝叶斯分类器,不一定非要是文本
就拿最简答的二分类来说明,贝叶斯分类是根据计算需要判断的参数分别属于不同类别的概率,哪个的概率大就属于哪一个分类。下面来看一个简单示例:
在学习朴素贝叶斯分类之前,需要有一些前驱课程的学习,比如概率论与数理统计,考虑到读者的水平层次不齐,这里再介绍一下条件概率的概念,后面的分类就是基于这个来进行的。
在了解了条件概率的概念后,我们来具体看一个语言分类的实例来加深理解,并进行实现和源码讲解。
语言分类问题
在我们的网络信息交流中有各式各样的用于,你是否有注意到当你发送一些不文明用于的时候,那些不文明用词会被屏蔽掉呢?一个识别的很好的方法就是通过朴素贝叶斯来进行识别。看上面的例子里,有留言、是否属于侮辱性留言的标签,可以看到,有garbage,stupid,dog的语句中被判断为了侮辱性留言。而我们应该怎么样进行分类呢?
(1) 收集数据:提供文本文件。
(2) 准备数据:将文本文件解析成词条向量。
(3) 分析数据:检查词条确保解析的正确性。
(4) 训练算法:使用我们之前建立的trainNB0()函数。
(5) 测试算法:使用classifyNB(),并且构建一个新的测试函数来计算文档集的错误率。
(6) 使用算法:构建一个完整的程序对一组文档进行分类,将错分的文档输出到屏幕上。
代码实现
词表到向量的转换函数
def loadDataSet():
postingList = [['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'],
['maybe', 'not', 'take', 'him', 'to', 'dog', 'park', 'stupid'],
['my', 'dalmation',