文档详情

朴素贝叶斯python代码实现.doc

发布:2017-08-08约字共8页下载文档
文本预览下载声明
朴素贝叶斯 优点:在数据较少的情况下仍然有效,可以处理多类别问题 缺点:对于输入数据的准备方式较为敏感 适用数据类型:标称型数据 ? 贝叶斯准则: 使用朴素贝叶斯进行文档分类 ? 朴素贝叶斯的一般过程 (1)收集数据:可以使用任何方法。本文使用RSS (2)准备数据:需要数值型或者布尔型数据 (3)分析数据:有大量特征时,绘制特征作用不大,此时使用直方图效果更好 (4)训练算法:计算不同的独立特征的条件概率 (5)测试算法:计算错误率 (6)使用算法:一个常见的朴素贝叶斯应用是文档分类。可以在任意的分类场景中使用朴素贝叶斯分类器,不一定非要是文本。 ? 准备数据:从文本中构建词向量 ? 在bayes.py [python]?view plaincopy #?coding=utf-8?? ?? def?loadDataSet():?? ????postingList?=?[[my,?dog,?has,?flea,?problems,?help,?please],?? ????[maybe,?not,?take,?him,?to,?dog,?park,?stupid],?? ????[my,?dalmation,?is,?so,?cute,?I,?love,?him],?? ????[stop,?posting,?stupid,?worthless,?garbage],?? ????[mr,?licks,?ate,?my,?steak,?how,?to,?stop,?him],?? ????[quit,?buying,?worthless,?dog,?food,?stupid]]?? ????classVec?=?[0,?1,?0,?1,?0,?1]??#?1代表侮辱性文字,0代表正常言论?? ????return?postingList,?classVec?? ?? def?createVocabList(dataSet):?? ????vocabSet?=?set([])?? ????for?document?in?dataSet:?? ????????vocabSet?=?vocabSet?|?set(document)?? ????return?list(vocabSet)?? ?? def?setOfWords2Vec(vocabList,?inputSet):?? ????returnVec?=?[0]?*?len(vocabList)?? ????for?word?in?inputSet:?? ????????if?word?in?vocabList:?? ????????????returnVec[vocabList.index(word)]?=?1?? ????????else:?? ????????????print?the?word:?%s?is?not?in?my?Vocabulary!?%?word?? ????return?returnVec?? 运行结果: ? ?? 训练算法:从词向量计算概率 [python]?view plaincopy #?朴素贝叶斯分类器训练函数???? #?trainMatrix:?文档矩阵,??trainCategory:?由每篇文档类别标签所构成的向量?? def?trainNB0(trainMatrix,?trainCategory):?? ????numTrainDocs?=?len(trainMatrix)?? ????numWords?=?len(trainMatrix[0])?? ????pAbusive?=?sum(trainCategory)?/?float(numTrainDocs)?? ????p0Num?=?zeros(numWords);?? ????p1Num?=?zeros(numWords);?? ????p0Denom?=?0.0;?? ????p1Denom?=?0.0;?? ????for?i?in?range(numTrainDocs):?? ????????if?trainCategory[i]?==?1:?? ????????????p1Num?+=?trainMatrix[i]?? ????????????p1Denom?+=?sum(trainMatrix[i])?? ????????else:?? ????????????p0Num?+=?trainMatrix[i]?? ????????????p0Denom?+=?sum(trainMatrix[i])?? ????p1Vect?=?p1Num?/?p1Denom?? ????p0Vect?=?p0Num?/?p1Denom?? ????return?p0Vect,?p1V
显示全部
相似文档