写程序学ML:朴素贝叶斯算法原理及实现(三)

本文介绍了如何使用朴素贝叶斯算法进行文本分类,包括对邮件和RSS源的处理。通过loadDataSet()创建样本,利用Bayes.trainNB0()进行训练,classifyNB()进行测试。在RSS分类中,使用feedparser解析源,localWords()获取词汇表和概率,getTopWords()展示高频词汇。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[题外话]近期申请了一个微信公众号:平凡程式人生。有兴趣的朋友可以关注,那里将会涉及更多更新机器学习、OpenCL+OpenCV以及图像处理方面的文章。

2.2   使用朴素贝叶斯算法对文本进行分类

使用朴素贝叶斯算法对文本进行分类实现过程如下:

创建文件doctest.py;

调用函数loadDataSet()创建6个文本样例,并标记每个样本的类别。

调用函数Bayes.createVocabList()创建6个样本对应的词汇表。

调用函数Bayes.bagOfWords2Vec()获取各个样本中单词出现次数的列表,并记录到变量trainMat中。

调用函数Bayes.trainNB0()使用6个样本进行训练,返回两个类别中各个单词出现的概率及样本中类别1的概率。

调用函苏Bayes.classifyNB()对测试样本进行分类测试。

具体代码实现如下:

def testingNB():
    listOPosts, listClasses = loadDataSet()
    myVocabList = Bayes.createVocabList(listOPosts)
    trainMat = []
    for postinDoc in listOPosts:
        #trainMat.append(Bayes.setOfWords2Vec(myVocabList, postinDoc))
        trainMat.append(Bayes.bagOfWords2Vec(myVocabList, postinDoc))
    p0V, p1V, pAb = Bayes.trainNB0(trainMat, listClasses)
    testEntry = ['love', 'my', 'dalmation']
    #thisDoc = array(Bayes.setOfWords2Vec(myVocabList, testEntry))
    thisDoc = array(Bayes.bagOfWords2Vec(myVocabList, testEntry))
    print testEntry, 'classified as: ', Bayes.classifyNB(thisDoc, p0V, p1V, pAb)
    testEntry = ['stupid', 'garbage']
    #thisDoc = array(Bayes.setOfWords2Vec(myVocabList, testEntry))
    thisDoc = array(Bayes.bagOfWords2Vec(myVocabL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值