-
【数据挖掘】拉普拉斯修正 ( 判别模型 | 概率模型 | 贝叶斯分类 | 拉普拉斯修正 | 朴素... 朴素贝叶斯优缺点 )
2020-04-21 12:17:05I . 判别模型 与 概率模型 II . 贝叶斯分类 III . 拉普拉斯修正 IV . 使用 朴素贝叶斯分类器 + 拉普拉斯修正 为样本分类 ( 完整分类流程 ) V . 朴素贝叶斯分类器使用 VI . 朴素贝叶斯分类的优缺点文章目录
I . 判别模型 与 概率模型
计算 当属性值取 时 , 类别属于 的概率 ;
使用 判别模型 和 概率模型 计算上述 概率对比 ;
① 判别模型 : 直接正面对 进行建模 ; 如 决策树 , 神经网络 , 支持向量机 ;
② 概率模型 : 对 的逆向概率 进行建模 , 再计算 ; 如 贝叶斯分类器 ;
II . 贝叶斯分类
贝叶斯分类中 , 计算 当属性值取 时 , 类别属于 的概率 ;
很难直接获得 , 使用贝叶斯公式可以通过其逆概率计算该值 :
-
先验概率 : 是先验概率 , 数据集中类别为 的样本数出现的概率 , 数据集越大越准确 ;
-
证据因子 : 是属性取值 的概率 , 该值也是从数据集中统计样本属性为 的概率 , 数据集越大越准确 , 该值与类别判定无关 ;
-
类条件概率 ( 似然 ) : 样本是 类别时 , 属性值是 的概率 , 可以通过机器学习获得 ;
是通过机器学习基于有限样本估算概率 , 和 可以根据当前样本统计获得 ;
III . 拉普拉斯修正
1 . 分类属性 计算方式 : 如果第 个属性的取值是离散的 , 即分类属性 , 那么通过以下公式计算 :
是分类为 类型的数据集样本个数 ;
是被分类成 类型的样本中 , 并且第 个值是 的样本个数 ;
2 . 属性屏蔽的情况 :
给出一个样本 , 预测其分类 ;
如果该样本的某个属性值 , 在某一个预测的分类 中没有出现过 , 即 是 , 那么计算出来的分类属性 就是 ;
进而 多属性分类的联合概率也就成为 ;
那么计算其分类为 的概率肯定是 , 整体的联合概率是通过乘法法则计算的 , 这样会抹去其它属性的信息 , 即使其它属性的权重很大 , 整体概率也会成为 ;
其它属性的概率权重被屏蔽了 , 结果肯定不准确 ; 这种情况就要 引入 拉普拉斯修正 ;
3 . 拉普拉斯修正 :
① 计算 先验概率 时 进行 拉普拉斯修正 :
- 表示训练集中 , 分类为 的样本个数 ;
- 表示训练集中样本中个数 ;
- 表示按照某属性分类的类别数 , 如 , 是否购买商品 , 是 或 否 两种可取值类别 , 这里 ;
② 计算 类条件概率 ( 似然 ) 时 进行 拉普拉斯修正 :
-
是分类为 类型的数据集样本个数 ;
-
是被分类成 类型的样本中 , 并且第 个值是 的样本个数 ;
-
表示该属性的可取值个数 , 如 , 是否购买商品 , 是 或 否 两种可取值类别 , 这里 ;
IV . 使用 朴素贝叶斯分类器 + 拉普拉斯修正 为样本分类 ( 完整分类流程 )
1 . 需求 : 根据 年龄 , 收入水平 , 是否是学生 , 信用等级 , 预测该用户是否会购买商品 ;
年龄 收入水平 是否是学生 信用等级 是否购买商品 小于 30 岁 高收入 不是 一般 不会 小于 30 岁 高收入 不是 很好 不会 31 ~ 39 岁 高收入 不是 一般 会 40 岁以上 中等收入 不是 一般 会 40 岁以上 低收入 是 一般 会 40 岁以上 低收入 是 很好 不会 31 ~ 40 岁 低收入 不是 很好 会 小于 30 岁 中等收入 不是 一般 不会 小于 30 岁 低收入 是 一般 会 40 岁以上 中等收入 是 一般 会 小于 30 岁 中等收入 是 很好 会 31 ~ 39 岁 中等收入 不是 很好 会 31 ~ 39 岁 高收入 是 一般 会 40 岁以上 中等收入 不是 很好 不会
2 . 为某未知类型样本进行分类 ;
① 未知样本的 个属性值为 : 年龄 小于 30 岁 , 收入 中等 , 是否是学生 是 , 信用等级 一般 , 四个值组成向量 ;
② 分类类型 : 是否购买商品 , 是 或者 否 ; 购买商品为 时间 , 不购买商品为事件 ;
③ 样本 个属性取值 , 并且类型为 的概率 : ;
④ 样本 个属性取值 , 并且类型为 的概率 : ;
3 . 计算取值 向量时 , 某分类的概率 :
① 以 计算为例 : 样本 个属性取值 , 并且类型为 的概率 , 直接求该概率是无法计算的 ;
② 引入贝叶斯公式 : 使用其逆概率 , 当类型是 是 , 取值为 的概率 ;
③ 逆概率 : 当类型是 是 , 取值为 的概率 ; 即 当购买商品时 , 前 个属性取值为 向量的概率 ;
4 . 计算取值 向量时 , 某分类的概率 :
① 以 计算为例 : 样本 个属性取值 , 并且类型为 的概率 , 直接求该概率是无法计算的 ;
② 引入贝叶斯公式 : 使用其逆概率 , 当类型是 是 , 取值为 的概率 ;
③ 逆概率 : 当类型是 是 , 取值为 的概率 ; 即 当购买商品时 , 前 个属性取值为 向量的概率 ;
5 . 比较取值 和 取值 的两个概率 :
① 原始概率 : 将 和 两个概率进行比较 ;
即 和 两个概率进行比较 ;
② 省略分母比较分子 : 分母都是 , 可以只比较分子 , 和 进行比较 ;
6 . 计算 个先验概率 : ( 引入拉普拉斯修正 )
这里使用引入 拉普拉斯修正 的公式进行计算 :
- 表示训练集中 , 分类为 的样本个数 ;
- 表示训练集中样本中个数 ;
- 表示按照某属性分类的类别数 , 如 , 是否购买商品 , 是 或 否 两种可取值类别 , 这里 ;
表示购买商品的概率 , 即上面 个训练集样本中 , 购买商品的概率 , 是 ;
表示不买商品的概率 , 即上面 个训练集样本中 , 不买商品的概率 , 是 ;
7 . 计算 概率 : 样本用户购买商品时 , 前 个属性取值 向量的概率 ; ( 引入拉普拉斯修正 )
这里使用引入拉普拉斯修正的 分类概率 计算公式 :
-
是分类为 类型的数据集样本个数 ;
-
是被分类成 类型的样本中 , 并且第 个值是 的样本个数 ;
-
表示该属性的可取值个数 , 如 , 是否购买商品 , 是 或 否 两种可取值类别 , 这里 ;
① 属性独立 : 朴素贝叶斯分类中认为属性间都是独立的 , 互不干扰 , 可以将 “前 个属性取值 向量的概率” 变成概率乘积 ;
② 未知样本的 个属性值为 : 年龄 小于 30 岁 , 收入 中等 , 是否是学生 是 , 信用等级 一般 , 四个值组成向量 ;
计算 : 买商品的用户样本中 , 取值为 向量的概率 , 如下 :
其中 :
买商品的用户中 , 年龄 小于 30 岁的概率 ;
买商品的用户中 , 收入中等的概率 ;
买商品的用户中 , 是学生的概率 ;
买商品的用户中 , 信用等级一般的概率 ;
③ 计算 : 个人买商品 , 其中有 个小于 30 岁 ;
拉普拉斯修正 : 年龄有 种取值 , 分别是 小于 30 , 30 ~ 40 , 40 以上 , 拉普拉斯修正的 ;
④ 计算 : 个人买商品 , 其中有 个 中等收入者 ;
拉普拉斯修正 : 收入水平有 种取值 , 分别是 高 , 中 , 低 , 拉普拉斯修正的 ;
⑤ 计算 : 个人买商品 , 其中有 个 是学生 ;
拉普拉斯修正 : 是否是学生有 种取值 , 分别是 是 , 否 , 拉普拉斯修正的 ;
⑥ 计算 : 个人买商品 , 其中有 个人信用等级一般 ;
拉普拉斯修正 : 信用等级 有 种取值 , 分别是 好 , 一般 , 拉普拉斯修正的 ;
⑦ 计算结果 :
8 . 计算 值 :
9 . 计算 概率 : 样本用户没有购买商品时 , 前 个属性取值 向量的概率 ;
这里使用引入拉普拉斯修正的 分类概率 计算公式 :
-
是分类为 类型的数据集样本个数 ;
-
是被分类成 类型的样本中 , 并且第 个值是 的样本个数 ;
-
表示该属性的可取值个数 , 如 , 是否购买商品 , 是 或 否 两种可取值类别 , 这里 ;
① 属性独立 : 朴素贝叶斯分类中认为属性间都是独立的 , 互不干扰 , 可以将 “前 个属性取值 向量的概率” 变成概率乘积 ;
② 未知样本的 个属性值为 : 年龄 小于 30 岁 , 收入 中等 , 是否是学生 是 , 信用等级 一般 , 四个值组成向量 ;
计算 : 不买商品的用户样本中 , 取值为 向量的概率 , 如下 :
其中 :
不买商品的用户中 , 年龄 小于 30 岁的概率 ;
不买商品的用户中 , 收入中等的概率 ;
不买商品的用户中 , 是学生的概率 ;
不买商品的用户中 , 信用等级一般的概率 ;
③ 计算 : 个人不买商品 , 其中有 个小于 30 岁 ;
拉普拉斯修正 : 年龄有 种取值 , 分别是 小于 30 , 30 ~ 40 , 40 以上 , 拉普拉斯修正的 ;
④ 计算 : 个人不买商品 , 其中有 个 中等收入者 ;
拉普拉斯修正 : 收入水平有 种取值 , 分别是 高 , 中 , 低 , 拉普拉斯修正的 ;
⑤ 计算 : 个人不买商品 , 其中有 个 是学生 ;
拉普拉斯修正 : 是否是学生有 种取值 , 分别是 是 , 否 , 拉普拉斯修正的 ;
⑥ 计算 : 个人不买商品 , 其中有 $2 个人信用等级一般 ;
拉普拉斯修正 : 信用等级 有 种取值 , 分别是 好 , 一般 , 拉普拉斯修正的 ;
⑦ 计算结果 :
10 . 计算 值 :
11 . 比较 和 两个值 :
由上面进行对比得出 , 使用朴素贝叶斯分类 , 该样本用户会购买商品 ;
V . 朴素贝叶斯分类器使用
1 . 要求分类速度快 : 此时先计算出所有数据的概率估值 , 分类时 , 直接查表计算 ;
2 . 数据集频繁变化 : 使用懒惰学习的策略 , 收到 分类请求时 , 再进行训练 , 然后预测 , 分类速度肯定变慢 , 但是预测准确 ;
3 . 数据不断增加 : 使用增量学习策略 , 原来的估值不变 , 对新样本进行训练 , 然后基于新样本的估值修正原来的估值 ;
VI . 朴素贝叶斯分类的优缺点
朴素贝叶斯分类 :
-
优点 : 只用几个公式实现 , 代码简单 , 结果大多数情况下比较准确 ;
-
缺点 : 假设的属性独立实际上不存在 , 属性间是存在关联的 , 这会导致部分分类结果不准确 ;
针对属性间存在依赖的情况 , 使用 贝叶斯信念网络 方法进行分类 ;
-
-
朴素贝叶斯算法优缺点
2018-07-14 00:06:07朴素贝叶斯的主要优点有:1)...朴素贝叶斯的主要缺点有: 1) 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型给定输出类别的情况下,假设属性之间...朴素贝叶斯的主要优点有:
1)朴素贝叶斯模型有稳定的分类效率。
2)对小规模的数据表现很好,能处理多分类任务,适合增量式训练,尤其是数据量超出内存时,可以一批批的去增量训练。
3)对缺失数据不太敏感,算法也比较简单,常用于文本分类。
朴素贝叶斯的主要缺点有:
1) 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型给定输出类别的情况下,假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。
2)需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。
3)由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率。
4)对输入数据的表达形式很敏感。 -
朴素贝叶斯的优缺点
2018-05-14 16:34:08朴素贝叶斯的主要优点有:1)朴素贝叶斯模型发源于古典...朴素贝叶斯的主要缺点有:1) 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相...朴素贝叶斯的主要优点有:
1)朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。
2)对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练。
3)对缺失数据不太敏感,算法也比较简单,常用于文本分类。
朴素贝叶斯的主要缺点有:
1) 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。
2)需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。
3)由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率。
4)对输入数据的表达形式很敏感。
以上就是朴素贝叶斯算法的一个总结,希望可以帮到朋友们。
文章源自:
http://www.cnblogs.com/pinard/p/6069267.html
另附:
1决策树(Decision Trees)的优缺点
决策树的优点:
一、决策树易于理解和解释.人们在通过解释后都有能力去理解决策树所表达的意义。
二、对于决策树,数据的准备往往是简单或者是不必要的.其他的技术往往要求先把数据一般化,比如去掉多余的或者空白的属性。
三、能够同时处理数据型和常规型属性。其他的技术往往要求数据属性的单一。
四、决策树是一个白盒模型。如果给定一个观察的模型,那么根据所产生的决策树很容易推出相应的逻辑表达式。
五、易于通过静态测试来对模型进行评测。表示有可能测量该模型的可信度。
六、 在相对短的时间内能够对大型数据源做出可行且效果良好的结果。
七、 可以对有许多属性的数据集构造决策树。
八、 决策树可很好地扩展到大型数据库中,同时它的大小独立于数据库的大小。
决策树的缺点:
一、对于那些各类别样本数量不一致的数据,在决策树当中,信息增益的结果偏向于那些具有更多数值的特征。
二、决策树处理缺失数据时的困难。
三、 过度拟合问题的出现。
四、忽略数据集中属性之间的相关性。
2 人工神经网络的优缺点
人工神经网络的优点:分类的准确度高,并行分布处理能力强,分布存储及学习能力强,对噪声神经有较强的鲁棒性和容错能力,能充分逼近复杂的非线性关系,具备联想记忆的功能等。
人工神经网络的缺点:神经网络需要大量的参数,如网络拓扑结构、权值和阈值的初始值;不能观察之间的学习过程,输出结果难以解释,会影响到结果的可信度和可接受程度;学习时间过长,甚至可能达不到学习的目的。
3 遗传算法的优缺点
遗传算法的优点:
一、与问题领域无关切快速随机的搜索能力。
二、搜索从群体出发,具有潜在的并行性,可以进行多个个体的同时比较,鲁棒性好。
三、搜索使用评价函数启发,过程简单。
四、使用概率机制进行迭代,具有随机性。
五、具有可扩展性,容易与其他算法结合。
遗传算法的缺点:
一、遗传算法的编程实现比较复杂,首先需要对问题进行编码,找到最优解之后还需要对问题进行解码,
二、另外三个算子的实现也有许多参数,如交叉率和变异率,并且这些参数的选择严重影响解的品质,而目前这些参数的选择大部分是依靠经验.没有能够及时利用网络的反馈信息,故算法的搜索速度比较慢,要得要较精确的解需要较多的训练时间。
三、算法对初始种群的选择有一定的依赖性,能够结合一些启发算法进行改进。
4 KNN算法(K-Nearest Neighbour) 的优缺点
KNN算法的优点:
一、简单、有效。
二、重新训练的代价较低(类别体系的变化和训练集的变化,在Web环境和电子商务应用中是很常见的)。
三、计算时间和空间线性于训练集的规模(在一些场合不算太大)。
四、由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。
五、该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。
KNN算法缺点:
一、KNN算法是懒散学习方法(lazy learning,基本上不学习),一些积极学习的算法要快很多。
二、类别评分不是规格化的(不像概率评分)。
三、输出的可解释性不强,例如决策树的可解释性较强。
四、该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。该算法只计算“最近的”邻居样本,某一类的样本数量很大,那么或者这类样本并不接近目标样本,或者这类样本很靠近目标样本。无论怎样,数量并不能影响运行结果。可以采用权值的方法(和该样本距离小的邻居权值大)来改进。
五、计算量较大。目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。
5 支持向量机(SVM)的优缺点
SVM的优点:
一、可以解决小样本情况下的机器学习问题。
二、可以提高泛化性能。
三、可以解决高维问题。
四、可以解决非线性问题。
五、可以避免神经网络结构选择和局部极小点问题。
SVM的缺点:
一、对缺失数据敏感。
二、对非线性问题没有通用解决方案,必须谨慎选择Kernelfunction来处理。
6 朴素贝叶斯的优缺点
优点:
一、朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。
二、NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。
缺点:
一、理论上,NBC模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为NBC模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的(可以考虑用聚类算法先将相关性较大的属性聚类),这给NBC模型的正确分类带来了一定影响。在属性个数比较多或者属性之间相关性较大时,NBC模型的分类效率比不上决策树模型。而在属性相关性较小时,NBC模型的性能最为良好。
二、需要知道先验概率。
三、分类决策存在错误率
7 Adaboosting方法的优点
一、adaboost是一种有很高精度的分类器。
二、可以使用各种方法构建子分类器,Adaboost算法提供的是框架。
三、当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造极其简单。
四、简单,不用做特征筛选。
五、不用担心overfitting。
8 Rocchio的优点
Rocchio算法的突出优点是容易实现,计算(训练和分类)特别简单,它通常用来实现衡量分类系统性能的基准系统,而实用的分类系统很少采用这种算法解决具体的分类问题。
-
朴素贝叶斯的介绍、概率基础(拉普拉斯平滑)、sklearn朴素贝叶斯实现API、朴素贝叶斯分类的优缺点、文本的...
2020-02-28 14:42:58贝叶斯公式2.4 概率统计词频2.5 拉普拉斯平滑三、sklearn朴素贝叶斯实现API四、朴素贝叶斯分类的优缺点五、文本特征工程5.1 文本分割,单词提取(1)英文(2)中文5.2 词数统计5.3 TFIDF(重要程度分析)5....朴素贝叶斯
文章目录
一、介绍
-
朴素:独立性假设
-
处理文本分类的
-
非结构化数据(文本和图片都是非结构数据,不成体系,无行无列,要处理成有行有列有特征的)
1.1 文本分类的应用
自然语言处理,垃圾游戏分类,垃圾短信分类,敏感话题过滤,舆情分析
可以处理的信息有:文字 语言 数字 传播信息稀疏矩阵
词向量统计模型例子:
你好 吃了吗 坦克 1 1 0 词云的例子
垃圾邮件分类
文章类别的概率
二、概率基础
概率定义为一件事情发生的可能性
- 扔出一个硬币,结果头像朝上
- 某天是晴天
2.1 概率例题
问题
1、女神喜欢的概率?4/7
2、职业是程序员并且体型匀称的概率?3/7*4/7=12/49
3、在女神喜欢的条件下,职业是程序员的概率?1/2
4、在女神喜欢的条件下,职业是产品,体重是超重的概率?02.2 联合概率和条件概率
2.3 朴素贝叶斯-贝叶斯公式
朴素贝叶斯的朴素:特征独立
公式分为三个部分:P(C)
: 每个文档类别的概率(某文档类别词数/总文档词数)
P(W|C)
: 给定类别下特征 (被预测文档中出现的词)的概率
计算方法: P(F1|C)= Ni/N ( 训练文档中去计算)
Ni为该F1词在C类别所有文档中出现的次数
N为所属类别C下的文档所有词出现的次数和P(F1,F2,..)
预测文档中 每个词的概率
-
pw是一样的,可以忽略,只比较分子
2.4 概率统计词频
训练集统计结果(指定统计词频):
现有一篇被预测文档:出现了影院,支付宝,云计算,计算属于科技、娱乐的类别概率?根据公式pc是每个文档类别的概率用词数来求而不是篇数!!!
预测文档的情况:
注意
pc如果是按篇数就是错了
思考:属于某个类别为0,合适吗?2.5 拉普拉斯平滑
问题:从上面的例子我们得到娱乐概率为0,这是不合理的,如果词频列表里面有很多出现次数都为0,很可能计算结果都为零。
解决方法:
拉普拉斯平滑系数
a为指定的系数一般为1 ,m为训练文档中统计出的特征调个数
所以这个地方的前三个乘数的
分子要加1
分母加上1*词的类别数
三、sklearn朴素贝叶斯实现API
sklearn.naive_bayes.MultinomialNB(alpha=1.0) #alpha是拉普拉斯平滑系数
四、朴素贝叶斯分类的优缺点
- 优点:
– 朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。
– 对缺失数据不太敏感,算法也比较简单,常用于文本分类。
– 分类准确度高,速度快. - 缺点:
– 需要知道先验概率P(F1,F2…|C),因此在某些时候会由于假设的先验
模型的原因导致预测效果不佳。
五、文本特征工程
import numpy as np import pandas as pd #记录中国的所有词语、成语(这个方法是吴军提出来的) import jieba as jb #pip install jieba -i https://pypi.douban.com/simple
#尝试jieba jb.lcut("你好,我是汪雯琦")
5.1 文本分割,单词提取
(1)英文
text = ['Life is happy,i am vicky','i like study study study']
# 文本的分割与处理 bow_text = [] #有多少个就循环多少次 for t in text: #过滤符号 t = t.replace(',',' ').replace('.',' ').split(' ') new_t = [] for word in t: #保留非空字符 if len(word)>0: new_t.append(word) bow_text.append(new_t) bow_text
(2)中文
#中文 text = ["人生苦短,我用python","vicky为自己代言"]
for i in range(len(text)): text[i] = ' '.join(jb.lcut(text[i]))
text
# 文本的分割与处理 bow_text = [] #有多少个就循环多少次 for t in text: #过滤符号 t = t.replace(',',' ').replace('.',' ').split(' ') new_t = [] for word in t: #保留非空字符 if len(word)>0: new_t.append(word.lower())#英文都变成小写 bow_text.append(new_t) bow_text
5.2 词数统计
#构建一个词库,变成特征 wordSets = [] for list_ in bow_text: wordSets += list_ wordSets = set(wordSets) wordSets
#列表里面嵌套字典,字典可以转变为DataFrame比较方便 wordDicts = [] for list_ in bow_text: wordDict = dict.fromkeys(wordSets,0)#字典中的key来源于集合的意思,初始化为0次 for word in list_: wordDict[word] += 1 wordDicts.append(wordDict)
pd.DataFrame(wordDicts)
词数统计已经让我们的文本分类了5.3 TFIDF(重要程度分析)
特征词语相对于当前文本的重要程度
TF(词频) IDF(逆文档频率)(包含某一个词语的文档数量比例)
IDF = log10(文档的总数 +1 / 包含某一个词语的文档数量 +1)
5.4 TF
tfDicts = [] for i in range(len(wordDicts)): tfidf = dict() #计算每个文本的单词量 nbowcount = len(bow_text[i]) for k,v in wordDicts[i].items(): tfidf[k] = v/nbowcount tfDicts.append(tfidf)
pd.DataFrame(tfDicts)
5.5 IDF
idfDict = dict.fromkeys(wordSets,0) N = len(text) #包含某一个词语的文档数量 for wordDict in wordDicts: for word,count in wordDict.items(): if count > 0: idfDict[word] += 1 idfDict_ = dict() #公式合并 for word,inv in idfDict.items(): idfDict_[word] = np.log10((N+1)/(inv+1))
idfDict_
5.6 TFIDF合并
tfidfs = [] for tf in tfDicts: tfidf = dict() for word,tfval in tf.items(): tfidf[word] = tfval * idfDict_[word] tfidfs.append(tfidf)
pd.DataFrame(tfidfs)
-
-
Python 高斯朴素贝叶斯的优缺点
2020-04-06 16:09:19Sklearn基于这些分布以及这些分布上的概率估计的改进,为我们提供了四个朴素贝叶斯的分类器 类 含义 naive_bayes.BernoulliNB 伯努利分布下的朴素贝叶斯 naive_bayes.GaussianNB 高斯分布下的朴素... -
算法的优缺点_朴素贝叶斯算法的优缺点
2021-01-12 13:38:05http://www.cnblogs.com/pinard/p/6069267.html作者:刘建平Pinard【机器学习算法与自然语言处理导读】朴素贝叶斯算法是最经典的几个机器学习算法之一,本文对它的优点,缺点进行总结。1.朴素贝叶斯算法朴素贝叶斯... -
朴素贝叶斯算法的优缺点
2019-03-30 14:11:48朴素贝叶斯算法的优缺点 优点: (1)朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。 (2)对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们... -
贝叶斯优缺点
2018-11-14 11:39:16朴素贝叶斯的主要优点有: ...朴素贝叶斯的主要缺点有: 1) 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型给定输出类别的情况下,假... -
机器学习:朴素贝叶斯算法的优缺点
2019-10-08 20:52:43朴素贝叶斯的主要优点 朴素贝叶斯模型发源于...朴素贝叶斯的主要缺点 理论上,朴素贝叶斯模型与其他分类方法相比,具有最小的误差率。但是,实际上并非总是如此,因为,朴素贝叶斯模型给定输出类别的情况下,假设... -
朴素贝叶斯简单推导及优缺点
2017-08-27 10:32:09朴素贝叶斯推导 -
朴素贝叶斯算法应用场景、联合概率和条件概率、朴素...朴素贝叶斯实现API、拉普拉斯平滑、优缺点、面试题
2020-05-11 15:49:41_": naviebayes() 输出结果: 在这里插入代码片 5.4 朴素贝叶斯分类优缺点 优点: 1、朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。 2、对缺失数据不太敏感,算法也比较简单,常用于文本分类。 3、分类准确...