朴素贝叶斯分类器设计方案v1.0
- 格式:docx
- 大小:20.59 KB
- 文档页数:4
朴素贝叶斯分类器的超参数调优方法朴素贝叶斯分类器是一种基于贝叶斯定理的机器学习算法,它在文本分类、垃圾邮件过滤、情感分析等领域有着广泛的应用。
尽管朴素贝叶斯分类器具有简单、高效的特点,但是在实际应用中,对其超参数的调优仍然是一个重要的课题。
本文将介绍一些常见的朴素贝叶斯分类器超参数调优方法,以及它们的优缺点。
1. 数据预处理在进行朴素贝叶斯分类器的超参数调优之前,首先需要进行数据预处理。
数据预处理包括数据清洗、特征提取、特征选择等步骤。
在数据清洗方面,需要处理缺失值、异常值等问题,以确保数据的质量。
在特征提取和选择方面,可以采用词袋模型、TF-IDF等技术,以提取有效的特征并降低特征的维度。
2. 贝叶斯估计朴素贝叶斯分类器的核心是基于贝叶斯定理进行分类。
在贝叶斯估计中,存在一个重要的超参数——平滑参数。
平滑参数的选择对分类器的性能有着重要的影响。
常见的平滑参数包括拉普拉斯平滑、Lidstone平滑等。
在实际应用中,可以通过交叉验证等方法选择最优的平滑参数。
3. 特征选择朴素贝叶斯分类器在特征选择方面有着其独特的优势。
在进行特征选择时,可以采用互信息、卡方检验等方法,以选择对分类器性能有着重要影响的特征。
此外,还可以采用特征组合、特征降维等方法,以提高分类器的效果。
4. 样本平衡在实际应用中,样本不均衡是一个常见的问题。
对于不均衡样本,朴素贝叶斯分类器的性能会受到影响。
因此,在进行超参数调优时,需要考虑样本平衡的问题。
可以采用过采样、欠采样等方法,以提高分类器对不均衡样本的适应能力。
5. 多分类问题朴素贝叶斯分类器通常用于二分类问题,但在一些实际应用中,需要处理多分类问题。
对于多分类问题,需要对朴素贝叶斯分类器进行相应的调优。
可以采用一对一、一对多等方法,以解决多分类问题。
6. 结合其他算法朴素贝叶斯分类器可以与其他算法进行结合,以提高分类器的性能。
例如,可以将朴素贝叶斯分类器与支持向量机、决策树等算法进行融合,以提高分类器的泛化能力。
朴素贝叶斯分类器详解及中⽂⽂本舆情分析(附代码实践)本⽂主要讲述朴素贝叶斯分类算法并实现中⽂数据集的舆情分析案例,希望这篇⽂章对⼤家有所帮助,提供些思路。
内容包括:1.朴素贝叶斯数学原理知识2.naive_bayes⽤法及简单案例3.中⽂⽂本数据集预处理4.朴素贝叶斯中⽂⽂本舆情分析本篇⽂章为基础性⽂章,希望对你有所帮助,如果⽂章中存在错误或不⾜之处,还请海涵。
同时,推荐⼤家阅读我以前的⽂章了解基础知识。
▌⼀. 朴素贝叶斯数学原理知识朴素贝叶斯(Naive Bayesian)是基于贝叶斯定理和特征条件独⽴假设的分类⽅法,它通过特征计算分类的概率,选取概率⼤的情况,是基于概率论的⼀种机器学习分类(监督学习)⽅法,被⼴泛应⽤于情感分类领域的分类器。
下⾯简单回顾下概率论知识:1.什么是基于概率论的⽅法?通过概率来衡量事件发⽣的可能性。
概率论和统计学是两个相反的概念,统计学是抽取部分样本统计来估算总体情况,⽽概率论是通过总体情况来估计单个事件或部分事情的发⽣情况。
概率论需要已知数据去预测未知的事件。
例如,我们看到天⽓乌云密布,电闪雷鸣并阵阵狂风,在这样的天⽓特征(F)下,我们推断下⾬的概率⽐不下⾬的概率⼤,也就是p(下⾬)>p(不下⾬),所以认为待会⼉会下⾬,这个从经验上看对概率进⾏判断。
⽽⽓象局通过多年长期积累的数据,经过计算,今天下⾬的概率p(下⾬)=85%、p(不下⾬)=15%,同样的 p(下⾬)>p(不下⾬),因此今天的天⽓预报肯定预报下⾬。
这是通过⼀定的⽅法计算概率从⽽对下⾬事件进⾏判断。
2.条件概率若Ω是全集,A、B是其中的事件(⼦集),P表⽰事件发⽣的概率,则条件概率表⽰某个事件发⽣时另⼀个事件发⽣的概率。
假设事件B发⽣后事件A发⽣的概率为:设P(A)>0,则有 P(AB) = P(B|A)P(A) = P(A|B)P(B)。
设A、B、C为事件,且P(AB)>0,则有 P(ABC) = P(A)P(B|A)P(C|AB)。
朴素贝叶斯分类算法的设计与分析朴素贝叶斯分类算法是一种常用于文本分类的算法,其核心思想是基于贝叶斯公式和特征条件独立假设,利用已有的样本数据集建立模型,进而对新样本进行分类。
1. 特征提取在分类之前,需要将文本数据转化为可计算的特征向量。
常见的特征提取方法包括词袋模型、TF-IDF等。
其中,词袋模型将一篇文本表示为一个词集合,即将文本中出现的所有单词组合成一个无序的集合;而TF-IDF则是根据某个词在文本中的出现频率和在整个文本集合中的逆文档频率来计算每个词的权重。
2. 模型训练在训练阶段,需要利用带有标签的样本数据集来构建分类器。
一般地,用$D={(x_1,y_1),(x_2,y_2),...,(x_n,y_n)}$表示训练样本集合,其中$x_i$表示文本的特征向量,$y_i$表示该文本所属的类别。
可以利用训练集中出现次数计算每个类别的先验概率$P(y)$,以及对于每个类别$y$,特征向量$x$在该类别下的条件概率$P(x|y)$。
具体而言,对于一个特征向量$x$和类别$y$,其条件概率可以用以下公式来计算:$P(x|y)=P(x_1,x_2,...,x_n|y)=P(x_1|y)*P(x_2|y)*...*P(x_n|y)$其中,特征条件独立假设是指假设在每个类别下,特征之间相互独立。
这个假设在实际情况中并不总是成立,但是由于其简化了模型的复杂度,并且在很多情况下可以得到不错的结果,因此被广泛应用。
3. 模型预测当拥有了训练好的模型之后,就可以对新的文本进行分类。
具体而言,对于一个特定的文本$x$,其所属类别$y$可以用以下公式来计算:$P(y|x) = \frac{P(y)*P(x|y)}{\sum_{y^\prime}P(y^\prime)*P(x|y^\prime)}$其中,分母是归一化项,其目的是保证概率的总和为1。
在实际应用中,通常只需要比较不同类别$y$的后验概率$P(y|x)$,将概率最大的类别作为该文本的分类结果即可。
朴素贝叶斯分类器及Python实现贝叶斯定理贝叶斯定理是通过对观测值概率分布的主观判断(即先验概率)进⾏修正的定理,在概率论中具有重要地位。
先验概率分布(边缘概率)是指基于主观判断⽽⾮样本分布的概率分布,后验概率(条件概率)是根据样本分布和未知参数的先验概率分布求得的条件概率分布。
贝叶斯公式:P(A∩B) = P(A)*P(B|A) = P(B)*P(A|B)变形得:P(A|B)=P(B|A)*P(A)/P(B)其中P(A)是A的先验概率或边缘概率,称作"先验"是因为它不考虑B因素。
P(A|B)是已知B发⽣后A的条件概率,也称作A的后验概率。
P(B|A)是已知A发⽣后B的条件概率,也称作B的后验概率,这⾥称作似然度。
P(B)是B的先验概率或边缘概率,这⾥称作标准化常量。
P(B|A)/P(B)称作标准似然度。
朴素贝叶斯分类(Naive Bayes)朴素贝叶斯分类器在估计类条件概率时假设属性之间条件独⽴。
⾸先定义x = {a1,a2,...}为⼀个样本向量,a为⼀个特征属性div = {d1 = [l1,u1],...} 特征属性的⼀个划分class = {y1,y2,...}样本所属的类别算法流程:(1) 通过样本集中类别的分布,对每个类别计算先验概率p(y[i])(2) 计算每个类别下每个特征属性划分的频率p(a[j] in d[k] | y[i])(3) 计算每个样本的p(x|y[i])p(x|y[i]) = p(a[1] in d | y[i]) * p(a[2] in d | y[i]) * ...样本的所有特征属性已知,所以特征属性所属的区间d已知。
可以通过(2)确定p(a[k] in d | y[i])的值,从⽽求得p(x|y[i])。
(4) 由贝叶斯定理得:p(y[i]|x) = ( p(x|y[i]) * p(y[i]) ) / p(x)因为分母相同,只需计算分⼦。
朴素贝叶斯分类方法1朴素贝叶斯分类方法概述朴素贝叶斯分类方法是在严谨的数学理论作支撑和假设分类项的各个属性相互独立的情况下基于贝叶斯定理而得出的一类分简单常用类方法。
假设一个属性对给定类的影响独立于其他属性,当条件独立性假设成立时,朴素贝叶斯分类算法具有最小的误分类率。
2数学知识准备2.1概率空间定义如果是上的一个实值函数,即对每一个,有一个实函数与之对应,并且满足一下三点:非负性规范性可列可加性若是R中的两两不相容的事件,则称是上的一个概率测度, 称为事件A的概率,三元组称为概率空间。
2.2条件概率定义设为一概率空间,,且则称为已知A发生时B的条件概率。
2.3 全概率公式定义设两两不相容,且,则对任何事件。
2.4 贝叶斯公式定义设两两不相容,则对于任何满足的B,,有:3朴素贝叶斯分类方法流程:3.1第一阶段——准备阶段:该阶段为朴素贝叶斯分类做必要的准备。
主要是依据具体情况确定特征属性,并且对特征属性进行适当划分。
然后就是对一部分待分类项进行人工划分,以确定训练样本。
这一阶段的输入是所有的待分类项,输出时特征属性和训练样本。
分类器的质量很大程度上依赖于特征属性及其划分以及训练样本的质量。
3.2第二阶段——分类器训练阶段:主要工作是计算每个类别在训练样本中出现频率以及每个特征属性划分对每个类别的条件概率估计。
输入是特征属性和训练样本,输出是分类器。
3.3第三阶段——应用阶段:这个阶段的任务是使用分类器对待分类项进行分类,其输入是分类器和待分类项,输出是待分类项与类别的映射关系。
这一阶段也是机械性阶段,由程序完成。
4朴素贝叶斯分类方法详细操作过程:4.1朴素贝叶斯分类或简单贝叶斯分类的工作过程(1)每个数据样本用一个n 维特征向量{}12,,...n X x x x =表示,分别描述对n 个属性A 1,A 2,…A n 样本的n 个度量。
(2)假定有m 个类C 1,C 2,…C m 。
给定一个未知的数据样本X (即没有类标号),分类法将预测X 属于具有最高后验概率(条件X 下)的类。
朴素贝叶斯分类器Naive Bayesian ClassifierC语言实现信息电气工程学院计算本1102班20112212465马振磊1.贝叶斯公式通过贝叶斯公式,我们可以的知在属性F1-Fn成立的情况下,该样本属于分类C的概率。
而概率越大,说明样本属于分类C的可能性越大。
若某样本可以分为2种分类A,B。
要比较P(A | F1,F2......) 与P(B | F1,F2......)的大小只需比较,P(A)P(F1,F2......| A) ,与P(B)P(F1,F2......| B) 。
因为两式分母一致。
而P(A)P(F1,F2......| A)可以采用缩放为P(A)P(F1|A)P(F2|A).......(Fn|A)因此,在分类时,只需比较每个属性在分类下的概率累乘,再乘该分类的概率即可。
分类属性outlook 属性temperature 属性humidity 属性wind no sunny hot high weakno sunny hot high strongyes overcast hot high weakyes rain mild high weakyes rain cool normal weakno rain cool normal strongyes overcast cool normal strongno sunny mild high weakyes sunny cool normal weakyes rain mild normal weakyes sunny mild normal strongyes overcast mild high strongyes overcast hot normal weakno rain mild high strong以上是根据天气的4种属性,某人外出活动的记录。
若要根据以上信息判断(Outlook = sunny,Temprature = cool,Humidity = high,Wind = strong)所属分类。
朴素贝叶斯分类器是一种基于贝叶斯定理和特征条件独立性假设的概率分类算法。
它在文本分类、垃圾邮件过滤等领域得到广泛应用。
下面是朴素贝叶斯分类器的基本算法步骤:
数据准备:收集并准备带有标记的训练数据集,包括已知类别的样本以及对应的特征向量。
特征提取:从每个样本中提取出特征,这些特征可以是文本中的单词、词频、关键词等信息,也可以是其他类型的特征。
模型训练:根据训练数据集,计算每个类别的先验概率(即每个类别出现的概率)和每个特征在不同类别下的条件概率。
模型构建:根据训练数据计算得到的先验概率和条件概率构建朴素贝叶斯模型。
测试样本分类:对于未知类别的测试样本,通过计算后验概率来确定其属于哪个类别。
后验概率由贝叶斯定理计算得到,选择具有最大后验概率的类别作为测试样本的分类结果。
评估模型性能:将测试样本的分类结果与真实标签进行比较,计算分类器的准确率、精确率、召回率等指标来评估模型的性能。
需要注意的是,朴素贝叶斯分类器基于特征条件独立性假设,即假设每个特征与其他特征相互独立。
这在某些情况下可能不成立,但朴素贝叶斯分类器仍然可以在实践中表现出良好的性能。
同时,对于连续型特征,通常需要进行概率密度函数估计,如高斯分布等。
朴素贝叶斯分类器朴素贝叶斯分类方法1朴素贝叶斯分类方法概述朴素贝叶斯分类方法是在严谨的数学理论作支撑和假设分类项的各个属性相互独立的情况下基于贝叶斯定理而得出的一类分简单常用类方法。
假设一个属性对给定类的影响独立于其他属性,当条件独立性假设成立时,朴素贝叶斯分类算法具有最小的误分类率。
2数学知识准备2.1概率空间定义如果是上的一个实值函数,即对每一个,有一个实函数与之对应,并且满足一下三点:非负性规范性可列可加性若是R中的两两不相容的事件,则称是上的一个概率测度, 称为事件A的概率,三元组称为概率空间。
2.2条件概率定义设为一概率空间,,且则称为已知A发生时B的条件概率。
2.3 全概率公式定义设两两不相容,且,则对任何事件。
2.4 贝叶斯公式定义设两两不相容,则对于任何满足的B,,有:3朴素贝叶斯分类方法流程:3.1第一阶段——准备阶段:该阶段为朴素贝叶斯分类做必要的准备。
主要是依据具体情况确定特征属性,并且对特征属性进行适当划分。
然后就是对一部分待分类项进行人工划分,以确定训练样本。
这一阶段的输入是所有的待分类项,输出时特征属性和训练样本。
分类器的质量很大程度上依赖于特征属性及其划分以及训练样本的质量。
3.2第二阶段——分类器训练阶段:主要工作是计算每个类别在训练样本中出现频率以及每个特征属性划分对每个类别的条件概率估计。
输入是特征属性和训练样本,输出是分类器。
3.3第三阶段——应用阶段:这个阶段的任务是使用分类器对待分类项进行分类,其输入是分类器和待分类项,输出是待分类项与类别的映射关系。
这一阶段也是机械性阶段,由程序完成。
4朴素贝叶斯分类方法详细操作过程:4.1朴素贝叶斯分类或简单贝叶斯分类的工作过程(1)每个数据样本用一个n 维特征向量{}12,,...n X x x x =表示,分别描述对n 个属性A 1,A 2,…A n 样本的n 个度量。
(2)假定有m 个类C 1,C 2,…C m 。
朴素贝叶斯分类算法介绍及python代码实现案例朴素贝叶斯分类算法1、朴素贝叶斯分类算法原理1.1、概述贝叶斯分类算法是⼀⼤类分类算法的总称贝叶斯分类算法以样本可能属于某类的概率来作为分类依据朴素贝叶斯分类算法是贝叶斯分类算法中最简单的⼀种注:朴素的意思是条件概率独⽴性P(A|x1x2x3x4)=p(A|x1)*p(A|x2)p(A|x3)p(A|x4)则为条件概率独⽴P(xy|z)=p(xyz)/p(z)=p(xz)/p(z)*p(yz)/p(z)1.2、算法思想朴素贝叶斯的思想是这样的:如果⼀个事物在⼀些属性条件发⽣的情况下,事物属于A的概率>属于B的概率,则判定事物属于A通俗来说⽐如,你在街上看到⼀个⿊⼈,我让你猜这哥们哪⾥来的,你⼗有⼋九猜⾮洲。
为什么呢?在你的脑海中,有这么⼀个判断流程:1、这个⼈的肤⾊是⿊⾊ <特征>2、⿊⾊⼈种是⾮洲⼈的概率最⾼ <条件概率:⿊⾊条件下是⾮洲⼈的概率>3、没有其他辅助信息的情况下,最好的判断就是⾮洲⼈这就是朴素贝叶斯的思想基础。
再扩展⼀下,假如在街上看到⼀个⿊⼈讲英语,那我们是怎么去判断他来⾃于哪⾥?提取特征:肤⾊:⿊语⾔:英语⿊⾊⼈种来⾃⾮洲的概率: 80%⿊⾊⼈种来⾃于美国的概率:20%讲英语的⼈来⾃于⾮洲的概率:10%讲英语的⼈来⾃于美国的概率:90%在我们的⾃然思维⽅式中,就会这样判断:这个⼈来⾃⾮洲的概率:80% * 10% = 0.08这个⼈来⾃美国的概率:20% * 90% =0.18我们的判断结果就是:此⼈来⾃美国!其蕴含的数学原理如下:p(A|xy)=p(Axy)/p(xy)=p(Axy)/p(x)p(y)=p(A)/p(x)*p(A)/p(y)* p(xy)/p(xy)=p(A|x)p(A|y)P(类别 | 特征)=P(特征 | 类别)*P(类别) / P(特征)1.3、算法步骤1、分解各类先验样本数据中的特征2、计算各类数据中,各特征的条件概率(⽐如:特征1出现的情况下,属于A类的概率p(A|特征1),属于B类的概率p(B|特征1),属于C类的概率p(C|特征1)......)3、分解待分类数据中的特征(特征1、特征2、特征3、特征4......)4、计算各特征的各条件概率的乘积,如下所⽰:判断为A类的概率:p(A|特征1)*p(A|特征2)*p(A|特征3)*p(A|特征4).....判断为B类的概率:p(B|特征1)*p(B|特征2)*p(B|特征3)*p(B|特征4).....判断为C类的概率:p(C|特征1)*p(C|特征2)*p(C|特征3)*p(C|特征4)..... ......5、结果中的最⼤值就是该样本所属的类别1.4、算法应⽤举例⼤众点评、淘宝等电商上都会有⼤量的⽤户评论,⽐如:1、⾐服质量太差了!!!!颜⾊根本不纯!!!2、我有⼀有种上当受骗的感觉!!!!3、质量太差,⾐服拿到⼿感觉像旧货!!!4、上⾝漂亮,合⾝,很帅,给卖家点赞5、穿上⾐服帅呆了,给点⼀万个赞6、我在他家买了三件⾐服!!!!质量都很差!0 0 0 1 1 0其中1/2/3/6是差评,4/5是好评现在需要使⽤朴素贝叶斯分类算法来⾃动分类其他的评论,⽐如:a、这么差的⾐服以后再也不买了b、帅,有逼格……1.5、算法应⽤流程1、分解出先验数据中的各特征(即分词,⽐如“⾐服”“质量太差”“差”“不纯”“帅”“漂亮”,“赞”……)2、计算各类别(好评、差评)中,各特征的条件概率(⽐如 p(“⾐服”|差评)、p(“⾐服”|好评)、p(“差”|好评) 、p(“差”|差评)……)3、分解出待分类样本的各特征(⽐如分解a: “差” “⾐服” ……)4、计算类别概率P(好评) = p(好评|“差”) *p(好评|“⾐服”)*……P(差评) = p(差评|“差”) *p(差评|“⾐服”)*……5、显然P(差评)的结果值更⼤,因此a被判别为“差评”1.6、朴素贝叶斯分类算法案例⼤体计算⽅法:P(好评 | 单词1,单词2,单词3) = P(单词1,单词2,单词3 | 好评) * P(好评) / P(单词1,单词2,单词3) 因为分母都相同,所以只⽤⽐较分⼦即可--->P(单词1,单词2,单词3 | 好评) P(好评) 每个单词之间都是相互独⽴的---->P(单词1 | 好评)P(单词2 | 好评)P(单词3 | 好评)*P(好评) P(单词1 | 好评) = 单词1在样本好评中出现的总次数/样本好评句⼦中总的单词数P(好评) = 样本好评的条数/样本的总条数同理:P(差评 | 单词1,单词2,单词3) = P(单词1,单词2,单词3 | 差评) * P(差评) / P(单词1,单词2,单词3) 因为分母都相同,所以只⽤⽐较分⼦即可--->P(单词1,单词2,单词3 | 差评) P(差评) 每个单词之间都是相互独⽴的---->P(单词1 | 差评)P(单词2 | 差评)P(单词3 | 差评)*P(差评) 1#!/usr/bin/python2# coding=utf-83from numpy import *45# 过滤⽹站的恶意留⾔侮辱性:1 ⾮侮辱性:06# 创建⼀个实验样本7def loadDataSet():8 postingList = [['my','dog','has','flea','problems','help','please'],9 ['maybe','not','take','him','to','dog','park','stupid'],10 ['my','dalmation','is','so','cute','I','love','him'],11 ['stop','posting','stupid','worthless','garbage'],12 ['mr','licks','ate','my','steak','how','to','stop','him'],13 ['quit','buying','worthless','dog','food','stupid']]14 classVec = [0,1,0,1,0,1]15return postingList, classVec1617# 创建⼀个包含在所有⽂档中出现的不重复词的列表18def createVocabList(dataSet):19 vocabSet = set([]) # 创建⼀个空集20for document in dataSet:21 vocabSet = vocabSet | set(document) # 创建两个集合的并集22return list(vocabSet)2324# 将⽂档词条转换成词向量25def setOfWords2Vec(vocabList, inputSet):26 returnVec = [0]*len(vocabList) # 创建⼀个其中所含元素都为0的向量27for word in inputSet:28if word in vocabList:29# returnVec[vocabList.index(word)] = 1 # index函数在字符串⾥找到字符第⼀次出现的位置词集模型30 returnVec[vocabList.index(word)] += 1 # ⽂档的词袋模型每个单词可以出现多次31else: print"the word: %s is not in my Vocabulary!" % word32return returnVec3334# 朴素贝叶斯分类器训练函数从词向量计算概率35def trainNB0(trainMatrix, trainCategory):36 numTrainDocs = len(trainMatrix)37 numWords = len(trainMatrix[0])38 pAbusive = sum(trainCategory)/float(numTrainDocs)39# p0Num = zeros(numWords); p1Num = zeros(numWords)40# p0Denom = 0.0; p1Denom = 0.041 p0Num = ones(numWords); # 避免⼀个概率值为0,最后的乘积也为042 p1Num = ones(numWords); # ⽤来统计两类数据中,各词的词频43 p0Denom = 2.0; # ⽤于统计0类中的总数44 p1Denom = 2.0 # ⽤于统计1类中的总数45for i in range(numTrainDocs):46if trainCategory[i] == 1:47 p1Num += trainMatrix[i]48 p1Denom += sum(trainMatrix[i])49else:50 p0Num += trainMatrix[i]51 p0Denom += sum(trainMatrix[i])52# p1Vect = p1Num / p1Denom53# p0Vect = p0Num / p0Denom54 p1Vect = log(p1Num / p1Denom) # 在类1中,每个次的发⽣概率55 p0Vect = log(p0Num / p0Denom) # 避免下溢出或者浮点数舍⼊导致的错误下溢出是由太多很⼩的数相乘得到的56return p0Vect, p1Vect, pAbusive5758# 朴素贝叶斯分类器59def classifyNB(vec2Classify, p0Vec, p1Vec, pClass1):60 p1 = sum(vec2Classify*p1Vec) + log(pClass1)61 p0 = sum(vec2Classify*p0Vec) + log(1.0-pClass1)62if p1 > p0:63return 164else:65return 06667def testingNB():68 listOPosts, listClasses = loadDataSet()69 myVocabList = createVocabList(listOPosts)70 trainMat = []71for postinDoc in listOPosts:72 trainMat.append(setOfWords2Vec(myVocabList, postinDoc))73 p0V, p1V, pAb = trainNB0(array(trainMat), array(listClasses))74 testEntry = ['love','my','dalmation']75 thisDoc = array(setOfWords2Vec(myVocabList, testEntry))76print testEntry, 'classified as: ', classifyNB(thisDoc, p0V, p1V, pAb)77 testEntry = ['stupid','garbage']78 thisDoc = array(setOfWords2Vec(myVocabList, testEntry))79print testEntry, 'classified as: ', classifyNB(thisDoc, p0V, p1V, pAb)8081# 调⽤测试⽅法----------------------------------------------------------------------82 testingNB()运⾏结果:。