朴素贝叶斯算法的python实现方法
本篇章节讲解朴素贝叶斯算法的python实现方法。分享给大家供大家参考。具体实现方法如下: 朴素贝叶斯算法优缺点 优点:在数据较少的情况下依然有效,可以处理多类别问题 缺点:对输入数据的准备方式敏感 适用数据类型:标称型数据 算法思想: 比如我们想判断一个邮件是不是垃圾邮件,那么我们知道的是这个邮件中的词的分布,那么我们还要知道:垃圾邮件中某些词的出现是多少,就可以利用贝叶斯定理得到。 朴素贝叶斯分类器中的一个假设是:每个特征同等重要 函数 创建数据集,这里的数据集是已经拆分好的单词组成的句子,表示的是某论坛的用户评论,标签1表示这个是骂人的 createVocabList(dataSet) 找出这些句子中总共有多少单词,以确定我们词向量的大小 setOfWords2Vec(vocabList,inputSet) 将句子根据其中的单词转成向量,这里用的是伯努利模型,即只考虑这个单词是否存在 bagOfWords2VecMN(vocabList,inputSet) 这个是将句子转成向量的另一种模型,多项式模型,考虑某个词的出现次数 trainNB0(trainMatrix,trainCatergory) 计算P(i)和P(w[i]|C[1])和P(w[i]|C[0]),这里有两个技巧,一个是开始的分子分母没有全部初始化为0是为了防止其中一个的概率为0导致整体为0,另一个是后面乘用对数防止因为精度问题结果为0 classifyNB(vec2Classify,p0Vec,p1Vec,pClass1) 根据贝叶斯公式 计算这个向量属于两个集合中哪个的概率高复制代码 代码如下: #coding=utf-8 from numpy import * def loadDataSet(): postingList=[['my','dog','has','flea','problems','help','please'], ['maybe','not','take','him','to','park','stupid'], ['my','dalmation','is','so','cute','I','love','him'], ['stop','posting','stupid','worthless','garbage'], ['mr','licks','ate','my','steak','how','stop', ['quit','buying','food','stupid']] classVec = [0,1,1] #1 is abusive,0 not return postingList,classVec #创建一个带有所有单词的列表 #另一种模型 def trainNB0(trainMatrix,trainCatergory): 希望本文所述对大家的Python程序设计有所帮助。 您可能感兴趣的文章:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |