国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁(yè) > 編程 > Python > 正文

樸素貝葉斯Python實(shí)例及解析

2020-02-15 23:44:22
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例為大家分享了Python樸素貝葉斯實(shí)例代碼,供大家參考,具體內(nèi)容如下

#-*- coding: utf-8 -*- #添加中文注釋from numpy import * #過(guò)濾網(wǎng)站的惡意留言#樣本數(shù)據(jù)  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']]  #類(lèi)別標(biāo)簽:1侮辱性文字,0正常言論  classVec = [0,1,0,1,0,1]     #返回文檔向量,類(lèi)別向量  return postingList,classVec #創(chuàng)建詞匯表#輸入:dataSet已經(jīng)經(jīng)過(guò)切分處理#輸出:包含所有文檔中出現(xiàn)的不重復(fù)詞的列表             def createVocabList(dataSet):  #構(gòu)建set集合,會(huì)返回不重復(fù)詞表  vocabSet = set([])  #遍歷每篇文檔向量,掃描所有文檔的單詞   for document in dataSet:    #通過(guò)set(document),獲取document中不重復(fù)詞列表    vocabSet = vocabSet | set(document) #求并集  return list(vocabSet) #***詞集模型:只考慮單詞是否出現(xiàn)#vocabList:詞匯表#inputSet :某個(gè)文檔向量def setOfWords2Vec(vocabList, inputSet):  #創(chuàng)建所含元素全為0的向量  returnVec = [0]*len(vocabList)  #依次取出文檔中的單詞與詞匯表進(jìn)行對(duì)照,若在詞匯表中出現(xiàn)則為1  for word in inputSet:    if word in vocabList:    #單詞在詞匯表中出現(xiàn),則記為1       returnVec[vocabList.index(word)] = 1 #詞集模型    #若測(cè)試文檔的單詞,不在詞匯表中,顯示提示信息,該單詞出現(xiàn)次數(shù)用0表示    else: print "the word: %s is not in my Vocabulary!" % word  return returnVec #====訓(xùn)練分類(lèi)器,原始的樸素貝葉斯,沒(méi)有優(yōu)化=====#輸入trainMatrix:詞向量數(shù)據(jù)集#輸入trainCategory:數(shù)據(jù)集對(duì)應(yīng)的類(lèi)別標(biāo)簽#輸出p0Vect:詞匯表中各個(gè)單詞在正常言論中的類(lèi)條件概率密度#輸出p1Vect:詞匯表中各個(gè)單詞在侮辱性言論中的類(lèi)條件概率密度#輸出pAbusive:侮辱性言論在整個(gè)數(shù)據(jù)集中的比例def trainNB00(trainMatrix,trainCategory):  #numTrainDocs訓(xùn)練集總條數(shù)  numTrainDocs = len(trainMatrix)  #訓(xùn)練集中所有不重復(fù)單詞總數(shù)  numWords = len(trainMatrix[0])  #侮辱類(lèi)的概率(侮辱類(lèi)占總訓(xùn)練數(shù)據(jù)的比例)  pAbusive = sum(trainCategory)/float(numTrainDocs)   #*正常言論的類(lèi)條件概率密度 p(某單詞|正常言論)=p0Num/p0Denom  p0Num = zeros(numWords); #初始化分子為0  #*侮辱性言論的類(lèi)條件概率密度 p(某單詞|侮辱性言論)=p1Num/p1Denom    p1Num = zeros(numWords) #初始化分子為0  #初始化分母置為0    p0Denom = 0;   p1Denom = 0          #遍歷訓(xùn)練集數(shù)據(jù)    for i in range(numTrainDocs):    #若為侮辱類(lèi)    if trainCategory[i] == 1:      #統(tǒng)計(jì)侮辱類(lèi)所有文檔中的各個(gè)單詞總數(shù)      p1Num += trainMatrix[i]      #p1Denom侮辱類(lèi)總單詞數(shù)      p1Denom += sum(trainMatrix[i])     #若為正常類(lèi)    else:      #統(tǒng)計(jì)正常類(lèi)所有文檔中的各個(gè)單詞總數(shù)      p0Num += trainMatrix[i]      #p0Denom正常類(lèi)總單詞數(shù)      p0Denom += sum(trainMatrix[i])    #詞匯表中的單詞在侮辱性言論文檔中的類(lèi)條件概率    p1Vect = p1Num/p1Denom      #詞匯表中的單詞在正常性言論文檔中的類(lèi)條件概率   p0Vect = p0Num/p0Denom  return p0Vect,p1Vect,pAbusive  #=====訓(xùn)練分類(lèi)器,優(yōu)化處理=====#輸入trainMatrix:詞向量數(shù)據(jù)集#輸入trainCategory:數(shù)據(jù)集對(duì)應(yīng)的類(lèi)別標(biāo)簽#輸出p0Vect:詞匯表中各個(gè)單詞在正常言論中的類(lèi)條件概率密度#輸出p1Vect:詞匯表中各個(gè)單詞在侮辱性言論中的類(lèi)條件概率密度#輸出pAbusive:侮辱性言論在整個(gè)數(shù)據(jù)集中的比例def trainNB0(trainMatrix,trainCategory):  #訓(xùn)練集總條數(shù):行數(shù)  numTrainDocs = len(trainMatrix)  #訓(xùn)練集中所有單詞總數(shù):詞向量維度  numWords = len(trainMatrix[0])  #侮辱類(lèi)的概率(侮辱類(lèi)占總訓(xùn)練數(shù)據(jù)的比例)  pAbusive = sum(trainCategory)/float(numTrainDocs)    #*拉普拉斯平滑防止類(lèi)條件概率為0,初始化分子為1,分母為2  #正常類(lèi)向量置為1  p0Num = ones(numWords); #初始化分子為1  #侮辱類(lèi)向量置為1    p1Num = ones(numWords) #初始化分子為1  #初始化分母置為2    p0Denom = 2.0;   p1Denom = 2.0          #遍歷訓(xùn)練集每個(gè)樣本    for i in range(numTrainDocs):    #若為侮辱類(lèi)    if trainCategory[i] == 1:      #統(tǒng)計(jì)侮辱類(lèi)所有文檔中的各個(gè)單詞總數(shù)      p1Num += trainMatrix[i] #向量      #p1Denom侮辱類(lèi)總單詞數(shù)      p1Denom += sum(trainMatrix[i])     #若為正常類(lèi)    else:      #統(tǒng)計(jì)正常類(lèi)所有文檔中的各個(gè)單詞總數(shù)      p0Num += trainMatrix[i]      #p0Denom正常類(lèi)總單詞數(shù)      p0Denom += sum(trainMatrix[i])    #數(shù)據(jù)取log,即單個(gè)單詞的p(x1|c1)取log,防止下溢出      p1Vect = log(p1Num/p1Denom)       p0Vect = log(p0Num/p0Denom)   return p0Vect,p1Vect,pAbusive #vec2Classify:待分類(lèi)文檔 #p0Vect:詞匯表中每個(gè)單詞在訓(xùn)練樣本的正常言論中的類(lèi)條件概率密度#p1Vect:詞匯表中每個(gè)單詞在訓(xùn)練樣本的侮辱性言論中的類(lèi)條件概率密度#pClass1:侮辱性言論在訓(xùn)練集中所占的比例def classifyNB(vec2Classify, p0Vect, p1Vect, pClass1):  #在對(duì)數(shù)空間中進(jìn)行計(jì)算,屬于哪一類(lèi)的概率比較大就判為哪一類(lèi)  #print'0p1=',sum(vec2Classify * p0Vect) #查看結(jié)果  #print'0p0=',sum(vec2Classify * p0Vect)  p1 = sum(vec2Classify * p1Vect) + log(pClass1)    p0 = sum(vec2Classify * p0Vect) + log(1.0 - pClass1)  #print'p1=',p1  #print'p0=',p0  if p1 > p0:    return 1  else:     return 0 def testingNB():  #獲得訓(xùn)練數(shù)據(jù),類(lèi)別標(biāo)簽  listOPosts,listClasses = loadDataSet()  #創(chuàng)建詞匯表  myVocabList = createVocabList(listOPosts)  #構(gòu)建矩陣,存放訓(xùn)練數(shù)據(jù)  trainMat=[]   #遍歷原始數(shù)據(jù),轉(zhuǎn)換為詞向量,構(gòu)成數(shù)據(jù)訓(xùn)練矩陣  for postinDoc in listOPosts:    #數(shù)據(jù)轉(zhuǎn)換后存入數(shù)據(jù)訓(xùn)練矩陣trainMat中    trainMat.append(setOfWords2Vec(myVocabList, postinDoc))  #訓(xùn)練分類(lèi)器  p0V,p1V,pAb = trainNB0(array(trainMat),array(listClasses))   #===測(cè)試數(shù)據(jù)(1)  testEntry = ['love', 'my', 'dalmation']  #測(cè)試數(shù)據(jù)轉(zhuǎn)為詞向量  thisDoc = array(setOfWords2Vec(myVocabList, testEntry))  #輸出分類(lèi)結(jié)果  print testEntry,'classified as: ',classifyNB(thisDoc,p0V,p1V,pAb)   #===測(cè)試數(shù)據(jù)(2)  testEntry = ['stupid', 'garbage']  #測(cè)試數(shù)據(jù)轉(zhuǎn)為詞向量  thisDoc = array(setOfWords2Vec(myVocabList, testEntry))  #輸出分類(lèi)結(jié)果  print testEntry,'classified as: ',classifyNB(thisDoc,p0V,p1V,pAb)     #***詞袋模型:考慮單詞出現(xiàn)的次數(shù)#vocabList:詞匯表#inputSet :某個(gè)文檔向量def bagOfWords2VecMN(vocabList, inputSet):  #創(chuàng)建所含元素全為0的向量  returnVec = [0]*len(vocabList)  #依次取出文檔中的單詞與詞匯表進(jìn)行對(duì)照,統(tǒng)計(jì)單詞在文檔中出現(xiàn)的次數(shù)  for word in inputSet:    if word in vocabList:      #單詞在文檔中出現(xiàn)的次數(shù)      returnVec[vocabList.index(word)] += 1    #若測(cè)試文檔的單詞,不在詞匯表中,顯示提示信息,該單詞出現(xiàn)次數(shù)用0表示    else: print "the word: %s is not in my Vocabulary!" % word  return returnVec  #準(zhǔn)備數(shù)據(jù),按空格切分出詞 #單詞長(zhǎng)度小于或等于2的全部丟棄def textParse(bigString):    import re  listOfTokens = re.split(r'/W*', bigString)  #tok.lower() 將整個(gè)詞轉(zhuǎn)換為小寫(xiě)  return [tok.lower() for tok in listOfTokens if len(tok) > 2]  def spamTest():  #文章按篇存放  docList=[];   #存放文章類(lèi)別  classList = [];  #存放所有文章內(nèi)容    fullText =[]  for i in range(1,26):    #讀取垃圾郵件    #wordList = textParse(open('D:/work/python/email/spam/%d.txt' % i).read())      wordList = textParse(open('D:/machine learning/python/bayes/email/spam/%d.txt' % i).read())      #docList按篇存放文章    docList.append(wordList)    #fullText郵件內(nèi)容存放到一起    fullText.extend(wordList)    #垃圾郵件類(lèi)別標(biāo)記為1    classList.append(1)     #讀取正常郵件    #wordList = textParse(open('D:/work/python/email/ham/%d.txt' % i).read())    wordList = textParse(open('D:/machine learning/python/bayes/email/ham/%d.txt' % i).read())    docList.append(wordList)    fullText.extend(wordList)    #正常郵件類(lèi)別標(biāo)記為0    classList.append(0)   #創(chuàng)建詞典    vocabList = createVocabList(docList)  #訓(xùn)練集共50篇文章  trainingSet = range(50);  #創(chuàng)建測(cè)試集  testSet=[]  #隨機(jī)選取10篇文章為測(cè)試集,測(cè)試集中文章從訓(xùn)練集中刪除    for i in range(10):    #0-50間產(chǎn)生一個(gè)隨機(jī)數(shù)    randIndex = int(random.uniform(0,len(trainingSet)))    #從訓(xùn)練集中找到對(duì)應(yīng)文章,加入測(cè)試集中    testSet.append(trainingSet[randIndex])    #刪除對(duì)應(yīng)文章    del(trainingSet[randIndex])    #準(zhǔn)備數(shù)據(jù),用于訓(xùn)練分類(lèi)器    trainMat=[]; #訓(xùn)練數(shù)據(jù)  trainClasses = [] #類(lèi)別標(biāo)簽   #遍歷訓(xùn)練集中文章數(shù)據(jù)  for docIndex in trainingSet:    #每篇文章轉(zhuǎn)為詞袋向量模型,存入trainMat數(shù)據(jù)矩陣中    trainMat.append(bagOfWords2VecMN(vocabList, docList[docIndex]))    #trainClasses存放每篇文章的類(lèi)別    trainClasses.append(classList[docIndex])  #訓(xùn)練分類(lèi)器  p0V,p1V,pSpam = trainNB0(array(trainMat),array(trainClasses))   #errorCount記錄測(cè)試數(shù)據(jù)出錯(cuò)次數(shù)  errorCount = 0  #遍歷測(cè)試數(shù)據(jù)集,每條數(shù)據(jù)相當(dāng)于一條文本  for docIndex in testSet:    #文本轉(zhuǎn)換為詞向量模型      wordVector = bagOfWords2VecMN(vocabList, docList[docIndex])    #模型給出的分類(lèi)結(jié)果與本身類(lèi)別不一致時(shí),說(shuō)明模型出錯(cuò),errorCount數(shù)加1    if classifyNB(array(wordVector),p0V,p1V,pSpam) != classList[docIndex]:      errorCount += 1      #輸出出錯(cuò)的文章      print "classification error",docList[docIndex]   #輸出錯(cuò)誤率,即出錯(cuò)次數(shù)/總測(cè)試次數(shù)  print 'the error rate is: ',float(errorCount)/len(testSet)    #return vocabList,fullText if __name__ == "__main__": ###**********************留言板數(shù)據(jù):觀察參數(shù)值start###  #獲取數(shù)據(jù)  listOPosts,listClasses = loadDataSet() #  #構(gòu)建詞匯表  myVocabList = createVocabList(listOPosts)  print 'myVocabList=',myVocabList  print 'result=',setOfWords2Vec(myVocabList, listOPosts[0])  trainMat = []  for postinDoc in listOPosts:    #構(gòu)建訓(xùn)練矩陣    trainMat.append(setOfWords2Vec(myVocabList, postinDoc))  p0Vect,p1Vect,pAbusive = trainNB0(trainMat, listClasses)  print 'p0Vect='  print p0Vect  print 'p1Vect='  print p1Vect  print 'pAbusive='  print pAbusive  print 'trainMatrix='  print trainMat  print 'listClasses=',listClasses###**********************留言板數(shù)據(jù):觀察參數(shù)值end   ##  #測(cè)試留言板文檔  print'==================================='  testingNB() #***********************垃圾郵件  ##  #垃圾郵件分類(lèi)  print'=======spam filtering============='  spamTest()            
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产日韩欧美精品一区二区三区 | 羞羞视频在线免费看| 国产精品一区二三区| 超碰在线免费播放| 国产麻豆精品高清在线播放| 超碰91在线| 国产麻豆精品视频一区二区| 中文字幕高清av| 69国产精品视频| 欧美午夜电影一区二区三区| 国产美女福利在线| 国产精品蜜臀| 天天操夜夜做| 午夜视频在线看| 在线黄色.com| 99视频免费| 国产大学生粉嫩无套流白浆| 在线观看av中文| 天天爱天天做色综合| 精品亚洲综合| 尤物在线视频| 青青草免费在线观看| 国产精品入口麻豆免费观看| www.国产精品.com| 精品视频vs精品视频| 国产精选在线视频拍拍拍| 999国产在线视频| 国产麻豆高清视频在线第一页| 91免费日韩| 国产一区二区三区不卡在线| 日本成人免费网站| 午夜国产在线| 久草在线视频网| 欧美高清xxxx性| www.狠狠艹| 免费观看久久久久| 四虎国产精品永久地址998| 2018中文字幕在线| 国产高清免费av在线| 国产一二区在线观看| 国产在线视精品麻豆| 欧美性猛交p30| 狂野欧美性猛交xxxx乱大交| 午夜羞羞小视频在线观看| 精品国内一区二区三区免费视频| 国产精品不卡一区二区三区在线观看| 九九热视频在线观看| 超碰97国产精品人人cao| 亚洲www色| 日本高清中文字幕在线| 日本国产在线| 成人日韩欧美| 最好看更新中文字幕| 国产亚洲依依| 9色在线视频网站| 亚洲人av在线| 免费99热在线观看| 中文字幕一区二区三区免费视频| 高清视频一区二区三区四区| 国产69精品久久app免费版| 国产乱xxⅹxx国语对白| 国产乱妇乱子在线播视频播放网站 | 中文产幕区在线观看| 国产xxx在线| sese在线视频| 丁香视频五月| 亚洲视频网站在线| 九九精品九九| 国产精品jvid在线观看| 在线看a视频| 国产中文字幕第一页| 国产精品综合久久久久| 国产视频中文字幕在线观看| 亚洲高清在线免费| 国产污视频在线| 欧美日韩**字幕一区| 国产污污在线观看| 欧美韩日国产| 精品国产高清自在线一区二区三区| 亚洲成av人影片在线观看| 国产一区精品| 国产在线观看色| 永久av在线| 国产三级在线免费观看| 免费观看v片在线观看| 91av福利| 国产精品视频一区二区图片| 免费看黄视频网站| 伊人久久青青草| 精品女厕厕露p撒尿| 中文字幕有码在线视频| 久草网在线视频| av资源网站在线观看| 96久久久久久| 国产www网站| 国产福利资源| 国产黄色免费网| 国产91足控脚交在线观看| 国产丝袜视频在线播放| 国产毛片在线看| 中文字幕人成高视频| 国产免费黄网站| 久久综合第一页| 免费a级毛片在线观看| 久草视频国产| 国产卡1卡2卡三卡在线| 国产精品自产拍在线网站| 国产精选在线观看| 国产精品免费视频一区一| 国产黄色在线免费观看| 91中文在线| 亚洲男人的天堂成人| 亚洲综合在线不卡| 欧美性xxxx交| 午夜伦全在线观看| 最近中文字幕mv免费高清在线| 激情在线视频播放| 国产麻豆麻豆| 国产激情自拍| 亚洲国产精品区| 成年网站免费入口在线观看| 中文字幕日本三级| 99re在线视频| 国产在线激情视频| 91麻豆精品国产91久久| h网站免费在线观看| 国产一卡2卡3卡4卡网站免费| 国产精品久久久久白浆| 日本黄在线观看| 中文字幕在线永久在线视频| 中文在线视频| 久热国产在线视频| 96久久久久久| 黄色av网站在线免费观看| 国产欧美日本亚洲精品一4区| 亚洲天堂久久久| 国产一级二级在线| 四虎精品成人a在线观看| 中文字幕不卡| 蜜桃av网站| av高清资源| 国产视频中文字幕在线观看| 天天插天天射| 在线中文字幕av| 国产三级在线免费观看| 丁香视频五月| av文字幕在线观看| 国产福利片在线| 国产在线视频网站| 亚洲午夜久久久久中文字幕| 国产高清免费av在线| 国产婷婷视频在线| 成av人免费青青久| 日本aⅴ写真网站免费| 精品视频麻豆入口| 精品国产二区三区| 国产黄色免费看| 国产一二三区精品视频| 久久久久久国产视频| av在线网页| 日本三级视频网站| av手机免费观看| 97国产视频| ·天天天天操| 在线观看中文| 俺来俺也去www色在线观看| www.色五月| 超碰在线免费播放| 国产美女自拍视频| 最近免费中文字幕大全免费第三页| 豆国产97在线|亚洲| 最好看更新中文字幕| 国产对白国语对白| 国产95在线|亚洲| 亚洲欧美一区二区三区在线播放| av男人的天堂网| 欧美日韩一区二区三区在线播放 | 玖玖在线视频| 国产免费自拍视频| 天天操天天是| 综合激情丁香| 精品麻豆视频| 超碰在线中文| 国产亚洲精品午夜高清影院| 国产三级视频| www.91av| 国产区视频在线观看| 在线免费看av| 国产理论在线观看| 在线看黄色av| 不卡av免费观看| 国产美女极品在线| 亚洲精品手机在线| 国产区视频在线| 日本aⅴ写真网站免费| 国产黄色免费电影| 久青青在线观看视频国产| 2019中文字幕在线电影免费| 欧美aaa一级片| 在线观看的网站你懂的|