• 大小: 500KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: Python
  • 标签: python  

资源简介

Python项目案例开发从入门到实战源代码第18章 机器学习案例——基于朴素贝叶斯算法的文本分类.rar

资源截图

代码片段和文件信息

from numpy import *
import re
#原始数据
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 = [010101]    #1代表侮辱性文字,0代表正常言论
    return postingListclassVec

#生成词汇表
def vocabList(dataSet):     
    vocabSet = set([])  #使用set创建不重复的词汇集
    for document in dataSet:
        vocabSet = vocabSet|set(document)  #创建两个集合的并集
    return list(vocabSet)

#词集模型
def setOfWordsVec(vocabListinputText):  #得到某个文档的词向量(词集模型)
    textVec = [0]*len(vocabList)#创建一个所包含元素都为0的向量
   #遍历文档中的所有单词,如果出现了词汇表中的单词,则将输出的文档向量中的对应值设为1
    for word in inputText:
      if word in vocabList:
          textVec[vocabList.index(word)] += 1
    return textVec

#词集模型
def bagOfWordsVec(vocabListinputText):#得到某个文档的词向量(词袋模型)
    textVec = [0]*len(vocabList)  #创建一个所包含元素都为0的向量
    #遍历文档中所有单词,若出现了词汇表中的单词,则将文档向量中的对应值+1
    for word in inputText:
      if word in vocabList:
          textVec[vocabList.index(word)] += 1
    return textVec

#训练算法
def trainNB(trainDocMatrixtrainCategory):
    numTrainDoc = len(trainDocMatrix)  #文档数
    numWord = len(trainDocMatrix[0])   #单词数
    # 侮辱性文件的出现概率,即用trainCategory中所有的1的个数除以文档总数
    pAbusive = sum(trainCategory)/float(numTrainDoc)   
    #构造单词出现的次数列表,初值为0,大小为单词数
    #p0Num = zeros(numWord)
    #p1Num = zeros(numWord)
    p0Num = ones(numWord)
    p1Num = ones(numWord)
    # 整个数据集单词出现总数
    p0Denom = 2.0
    p1Denom = 2.0 
    #p0Denom = 0.0
    #p1Denom = 0.0 
    #对每个文档遍历      
    for i in range(numTrainDoc):
        #是否是侮辱性文档
        if trainCategory[i] ==1:
            # 如果是侮辱性文档,对侮辱性文档的向量进行加和
            p1Num+=trainDocMatrix[i]
            # 对向量中所有元素求和,也就是计算所有侮辱性文档中出现的单词总数
            p1Denom+=sum(trainDocMatrix[i])
        else:
            p0Num+=trainDocMatrix[i]
            p0Denom+=sum(trainDocMatrix[i])
    #类别1下,每个单词出现的概率,即
    p1Vec = log(p1Num/p1Denom)
    # p1Vec = p1Num/p1Denom
    #类别0下,每个单词出现的概率,即
    #p0Vec = p0Num/p0Denom
    p0Vec = log(p0Num/p0Denom)
    return p0Vecp1VecpAbusive

#分类算法
def classifyNB(textVecp0Vecp1VecpClass1):
    “““
     分类函数
    :param textVec: 要分类的文档向量
    :param p0Vec: 正常文档类(类别0)下的单词概率列表
    :param p1Vec: 侮辱性文档类(类别1)下的单词概率列表
    :param pClass1: 侮辱性文档(类别1)概率
    :return: 类别1 or 0
    “““
    p1=sum(textVec*p1Vec)+log(pClass1)
    p0=sum(textVec*p0Vec)+log(1.0-pClass1)
    #print(‘p1=‘p1)
    #print(‘p0=‘p0)
    if p1>p0:
        return 1
    else:
        return 0

#测试
def testNB():
    “““
    朴素贝叶斯算法测试
    “““
    #1、加载数据集
    listOpostslistClasses = loadDataSet()
    #2、创建词汇表
    wordList = vocabL

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      37373  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\1.txt

     文件      36633  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\10.txt

     文件      37387  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\11.txt

     文件      37954  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\12.txt

     文件      37784  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\13.txt

     文件      37782  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\14.txt

     文件      37939  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\15.txt

     文件      36106  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\16.txt

     文件      38233  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\17.txt

     文件      37413  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\18.txt

     文件      37750  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\19.txt

     文件      36600  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\2.txt

     文件      36930  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\20.txt

     文件      37127  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\21.txt

     文件      37396  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\22.txt

     文件      37501  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\23.txt

     文件      36057  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\24.txt

     文件      36278  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\25.txt

     文件      37599  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\3.txt

     文件      36573  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\4.txt

     文件      36292  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\5.txt

     文件      38536  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\6.txt

     文件      36998  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\7.txt

     文件      37340  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\8.txt

     文件      36857  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\noSpam\9.txt

     文件      36781  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\spam\1.txt

     文件      37121  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\spam\10.txt

     文件      38547  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\spam\11.txt

     文件      37262  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\spam\12.txt

     文件      37328  2018-04-12 07:31  第18章 机器学习案例——基于朴素贝叶斯算法的文本分类\第18章 代码\email\spam\13.txt

............此处省略30个文件信息

评论

共有 条评论