本文主要包含Stanford机器学习[第六讲]-朴素贝叶斯算法,stanford第六讲等服务器相关知识,网友希望可以进行参考
Stanford机器学习[第六讲]-朴素贝叶斯算法,stanford第六讲
引文:由于之前讲过了朴素贝叶斯的理论Stanford机器学习[第五讲]-生成学习算法第四部分,同时朴素贝叶斯的算法实现也讲过了,见机器学习算法-朴素贝叶斯Python实现。那么这节课打算讲解一下朴素贝叶斯算法的具体计算流程,通过一个具体的实例来讲解。
PS:为了专注于某一个细节,本章节只抽取了视频的一部分来讲解,只讲解一个贝叶斯算法的计算流程,关于视频里面的具体内容请参考下面的视频链接。
讲解的实例是一个文本分类的例子,区分一句话是粗鲁的还是文明的,类别标签只有Yes或No,表示是粗鲁的和不是粗鲁的语句。
1.给定一个训练集
| Words | Label |
|---|---|
| my name is Devin. | No |
| you are stupid. | Yes |
| my boyfriend is SB. | Yes |
| you looks very smart,I like you very much. | No |
上面这个数据集是我随机取的,label表示的是是否粗鲁。
2.处理数据
首先根据上面给出的数据构建出一个词库出来,如下:
【”my”,“name”,“is”,“Devin”,“you”,“are”,“stupid”,“boyfriend”,“SB”,“looks”,
“very”,“smart”,”like”,”much”】
这个词库总单词个数只有14个,相对而言比较少,这里只做个例子,单词多的情况下同样处理。
然后将每个样本映射到词库中,得到一个大的矩阵
| my | name | is | Devin | you | are | stupid | boyfriend | SB | looks | very | smart | like | much | classLabel |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
| 1 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 1 | 2 | 1 | 1 | 1 | 0 |
上面是得到的一个词频矩阵,最后一栏表示的是类标号,下面通过这个词频举证来计算不同类标号下每个词发生的概率,即条件概率
实际的处理中为了防止0概率的发生,通常是将词频矩阵初始化为1,这里就不这么做了,简单化计算吧。
3.计算
设几个变量:
numWords :表示单词的总数p1Mat :表示正样本中各单词出现的次数矩阵p0Num :表示负样本中各单词出现的次数矩阵p1Vec :表示正负样本条件下的各单词的出现的概率,即条件概率p(xi

