深度 | 朴素贝叶斯模型算法研究与实例分析 (5)

与多项分布朴素贝叶斯的规则不同 伯努利朴素贝叶斯明确地惩罚类 y 中没有出现作为预测因子的特征 i ,而多项分布分布朴素贝叶斯只是简单地忽略没出现的特征。

在文本分类的例子中,词频向量(word occurrence vectors)(而非词数向量(word count vectors))可能用于训练和用于这个分类器。 BernoulliNB 可能在一些数据集上可能表现得更好,特别是那些更短的文档。 如果时间允许,建议对两个模型都进行评估。

伯努利朴素贝叶斯代码实现如下:

'''伯努利朴素贝叶斯''' def MyBernoulliNB(trainMat='',Classlabels='',testDoc=''): # -----sklearn BernoulliNB------- # 训练数据 X = np.array(trainMat) Y = np.array(Classlabels) # 多项朴素贝叶斯 clf = BernoulliNB() clf.fit(X, Y) # 测试预测结果 index = clf.predict(testDoc) # 返回索引 reslist = ['Art','Literature','Education','Philosophy','History'] print(reslist[index[0]]) 各种贝叶斯模型分类测试

代码实现如下:
def testingNB():

# 加载数据集和单词集合 trainMat,Classlabels,myVocabList = grabdata() # 读取训练结果 # 测试数据 testEntry = textParse(open('./fudan/test/C6-2.txt',encoding='UTF-8').read()) testDoc = np.array(bagOfWords2VecMN(myVocabList, testEntry)) # 测试数据 # 测试预测结果 MyGaussianNB(trainMat,Classlabels,testDoc) MyMultinomialNB(trainMat,Classlabels,testDoc) MyBernoulliNB(trainMat,Classlabels,testDoc)

运行结果:

Building prefix dict from the default dictionary ... Loading model from cache C:\Users\ADMINI~1\AppData\Local\Temp\jieba.cache Loading model cost 1.014 seconds. Prefix dict has been built succesfully. 高斯朴素贝叶斯:Education 多项朴素贝叶斯分类结果:Art 伯努利朴素贝叶斯分类结果:Literature 耗时:2.3996 s 参考文献

scikit中文社区:

中文维基百科:https://zh.wikipedia.org/wiki/

文本分类特征选择:https://www.cnblogs.com/june0507/p/7601001.html

GitHub:https://github.com/BaiNingchao/MachineLearning-1

图书:《机器学习实战》

图书:《自然语言处理理论与实战》

完整代码下载

源码请进【机器学习和自然语言QQ群:436303759】文件下载:


深度 | 朴素贝叶斯模型算法研究与实例分析

作者声明

本文版权归作者白宁超所有,本文原创,旨在学术和科研使用。文章同步如下:

博客园

我爱自然语言处理

阿里云栖 https://yq.aliyun.com/u/baiboy

腾讯云社区https://cloud.tencent.com/developer/user/2991686

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpdysg.html