亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

樸素貝葉斯Python實例及解析

2020-02-15 23:44:22
字體:
來源:轉載
供稿:網友

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

#-*- coding: utf-8 -*- #添加中文注釋from numpy import * #過濾網站的惡意留言#樣本數據  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']]  #類別標簽:1侮辱性文字,0正常言論  classVec = [0,1,0,1,0,1]     #返回文檔向量,類別向量  return postingList,classVec #創建詞匯表#輸入:dataSet已經經過切分處理#輸出:包含所有文檔中出現的不重復詞的列表             def createVocabList(dataSet):  #構建set集合,會返回不重復詞表  vocabSet = set([])  #遍歷每篇文檔向量,掃描所有文檔的單詞   for document in dataSet:    #通過set(document),獲取document中不重復詞列表    vocabSet = vocabSet | set(document) #求并集  return list(vocabSet) #***詞集模型:只考慮單詞是否出現#vocabList:詞匯表#inputSet :某個文檔向量def setOfWords2Vec(vocabList, inputSet):  #創建所含元素全為0的向量  returnVec = [0]*len(vocabList)  #依次取出文檔中的單詞與詞匯表進行對照,若在詞匯表中出現則為1  for word in inputSet:    if word in vocabList:    #單詞在詞匯表中出現,則記為1       returnVec[vocabList.index(word)] = 1 #詞集模型    #若測試文檔的單詞,不在詞匯表中,顯示提示信息,該單詞出現次數用0表示    else: print "the word: %s is not in my Vocabulary!" % word  return returnVec #====訓練分類器,原始的樸素貝葉斯,沒有優化=====#輸入trainMatrix:詞向量數據集#輸入trainCategory:數據集對應的類別標簽#輸出p0Vect:詞匯表中各個單詞在正常言論中的類條件概率密度#輸出p1Vect:詞匯表中各個單詞在侮辱性言論中的類條件概率密度#輸出pAbusive:侮辱性言論在整個數據集中的比例def trainNB00(trainMatrix,trainCategory):  #numTrainDocs訓練集總條數  numTrainDocs = len(trainMatrix)  #訓練集中所有不重復單詞總數  numWords = len(trainMatrix[0])  #侮辱類的概率(侮辱類占總訓練數據的比例)  pAbusive = sum(trainCategory)/float(numTrainDocs)   #*正常言論的類條件概率密度 p(某單詞|正常言論)=p0Num/p0Denom  p0Num = zeros(numWords); #初始化分子為0  #*侮辱性言論的類條件概率密度 p(某單詞|侮辱性言論)=p1Num/p1Denom    p1Num = zeros(numWords) #初始化分子為0  #初始化分母置為0    p0Denom = 0;   p1Denom = 0          #遍歷訓練集數據    for i in range(numTrainDocs):    #若為侮辱類    if trainCategory[i] == 1:      #統計侮辱類所有文檔中的各個單詞總數      p1Num += trainMatrix[i]      #p1Denom侮辱類總單詞數      p1Denom += sum(trainMatrix[i])     #若為正常類    else:      #統計正常類所有文檔中的各個單詞總數      p0Num += trainMatrix[i]      #p0Denom正常類總單詞數      p0Denom += sum(trainMatrix[i])    #詞匯表中的單詞在侮辱性言論文檔中的類條件概率    p1Vect = p1Num/p1Denom      #詞匯表中的單詞在正常性言論文檔中的類條件概率   p0Vect = p0Num/p0Denom  return p0Vect,p1Vect,pAbusive  #=====訓練分類器,優化處理=====#輸入trainMatrix:詞向量數據集#輸入trainCategory:數據集對應的類別標簽#輸出p0Vect:詞匯表中各個單詞在正常言論中的類條件概率密度#輸出p1Vect:詞匯表中各個單詞在侮辱性言論中的類條件概率密度#輸出pAbusive:侮辱性言論在整個數據集中的比例def trainNB0(trainMatrix,trainCategory):  #訓練集總條數:行數  numTrainDocs = len(trainMatrix)  #訓練集中所有單詞總數:詞向量維度  numWords = len(trainMatrix[0])  #侮辱類的概率(侮辱類占總訓練數據的比例)  pAbusive = sum(trainCategory)/float(numTrainDocs)    #*拉普拉斯平滑防止類條件概率為0,初始化分子為1,分母為2  #正常類向量置為1  p0Num = ones(numWords); #初始化分子為1  #侮辱類向量置為1    p1Num = ones(numWords) #初始化分子為1  #初始化分母置為2    p0Denom = 2.0;   p1Denom = 2.0          #遍歷訓練集每個樣本    for i in range(numTrainDocs):    #若為侮辱類    if trainCategory[i] == 1:      #統計侮辱類所有文檔中的各個單詞總數      p1Num += trainMatrix[i] #向量      #p1Denom侮辱類總單詞數      p1Denom += sum(trainMatrix[i])     #若為正常類    else:      #統計正常類所有文檔中的各個單詞總數      p0Num += trainMatrix[i]      #p0Denom正常類總單詞數      p0Denom += sum(trainMatrix[i])    #數據取log,即單個單詞的p(x1|c1)取log,防止下溢出      p1Vect = log(p1Num/p1Denom)       p0Vect = log(p0Num/p0Denom)   return p0Vect,p1Vect,pAbusive #vec2Classify:待分類文檔 #p0Vect:詞匯表中每個單詞在訓練樣本的正常言論中的類條件概率密度#p1Vect:詞匯表中每個單詞在訓練樣本的侮辱性言論中的類條件概率密度#pClass1:侮辱性言論在訓練集中所占的比例def classifyNB(vec2Classify, p0Vect, p1Vect, pClass1):  #在對數空間中進行計算,屬于哪一類的概率比較大就判為哪一類  #print'0p1=',sum(vec2Classify * p0Vect) #查看結果  #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():  #獲得訓練數據,類別標簽  listOPosts,listClasses = loadDataSet()  #創建詞匯表  myVocabList = createVocabList(listOPosts)  #構建矩陣,存放訓練數據  trainMat=[]   #遍歷原始數據,轉換為詞向量,構成數據訓練矩陣  for postinDoc in listOPosts:    #數據轉換后存入數據訓練矩陣trainMat中    trainMat.append(setOfWords2Vec(myVocabList, postinDoc))  #訓練分類器  p0V,p1V,pAb = trainNB0(array(trainMat),array(listClasses))   #===測試數據(1)  testEntry = ['love', 'my', 'dalmation']  #測試數據轉為詞向量  thisDoc = array(setOfWords2Vec(myVocabList, testEntry))  #輸出分類結果  print testEntry,'classified as: ',classifyNB(thisDoc,p0V,p1V,pAb)   #===測試數據(2)  testEntry = ['stupid', 'garbage']  #測試數據轉為詞向量  thisDoc = array(setOfWords2Vec(myVocabList, testEntry))  #輸出分類結果  print testEntry,'classified as: ',classifyNB(thisDoc,p0V,p1V,pAb)     #***詞袋模型:考慮單詞出現的次數#vocabList:詞匯表#inputSet :某個文檔向量def bagOfWords2VecMN(vocabList, inputSet):  #創建所含元素全為0的向量  returnVec = [0]*len(vocabList)  #依次取出文檔中的單詞與詞匯表進行對照,統計單詞在文檔中出現的次數  for word in inputSet:    if word in vocabList:      #單詞在文檔中出現的次數      returnVec[vocabList.index(word)] += 1    #若測試文檔的單詞,不在詞匯表中,顯示提示信息,該單詞出現次數用0表示    else: print "the word: %s is not in my Vocabulary!" % word  return returnVec  #準備數據,按空格切分出詞 #單詞長度小于或等于2的全部丟棄def textParse(bigString):    import re  listOfTokens = re.split(r'/W*', bigString)  #tok.lower() 將整個詞轉換為小寫  return [tok.lower() for tok in listOfTokens if len(tok) > 2]  def spamTest():  #文章按篇存放  docList=[];   #存放文章類別  classList = [];  #存放所有文章內容    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郵件內容存放到一起    fullText.extend(wordList)    #垃圾郵件類別標記為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)    #正常郵件類別標記為0    classList.append(0)   #創建詞典    vocabList = createVocabList(docList)  #訓練集共50篇文章  trainingSet = range(50);  #創建測試集  testSet=[]  #隨機選取10篇文章為測試集,測試集中文章從訓練集中刪除    for i in range(10):    #0-50間產生一個隨機數    randIndex = int(random.uniform(0,len(trainingSet)))    #從訓練集中找到對應文章,加入測試集中    testSet.append(trainingSet[randIndex])    #刪除對應文章    del(trainingSet[randIndex])    #準備數據,用于訓練分類器    trainMat=[]; #訓練數據  trainClasses = [] #類別標簽   #遍歷訓練集中文章數據  for docIndex in trainingSet:    #每篇文章轉為詞袋向量模型,存入trainMat數據矩陣中    trainMat.append(bagOfWords2VecMN(vocabList, docList[docIndex]))    #trainClasses存放每篇文章的類別    trainClasses.append(classList[docIndex])  #訓練分類器  p0V,p1V,pSpam = trainNB0(array(trainMat),array(trainClasses))   #errorCount記錄測試數據出錯次數  errorCount = 0  #遍歷測試數據集,每條數據相當于一條文本  for docIndex in testSet:    #文本轉換為詞向量模型      wordVector = bagOfWords2VecMN(vocabList, docList[docIndex])    #模型給出的分類結果與本身類別不一致時,說明模型出錯,errorCount數加1    if classifyNB(array(wordVector),p0V,p1V,pSpam) != classList[docIndex]:      errorCount += 1      #輸出出錯的文章      print "classification error",docList[docIndex]   #輸出錯誤率,即出錯次數/總測試次數  print 'the error rate is: ',float(errorCount)/len(testSet)    #return vocabList,fullText if __name__ == "__main__": ###**********************留言板數據:觀察參數值start###  #獲取數據  listOPosts,listClasses = loadDataSet() #  #構建詞匯表  myVocabList = createVocabList(listOPosts)  print 'myVocabList=',myVocabList  print 'result=',setOfWords2Vec(myVocabList, listOPosts[0])  trainMat = []  for postinDoc in listOPosts:    #構建訓練矩陣    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###**********************留言板數據:觀察參數值end   ##  #測試留言板文檔  print'==================================='  testingNB() #***********************垃圾郵件  ##  #垃圾郵件分類  print'=======spam filtering============='  spamTest()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品国产成人av| 国产精品欧美风情| 国产成人福利网站| 久久久久久久久久久久久久久久久久av| 色偷偷av亚洲男人的天堂| 色爱av美腿丝袜综合粉嫩av| 麻豆国产va免费精品高清在线| 亚洲精品视频二区| 亚洲成人999| 日韩av片免费在线观看| 久久久精品中文字幕| 国产精品美女www爽爽爽视频| 国产精品极品美女在线观看免费| 欧美性黄网官网| 国产精品欧美亚洲777777| 亚洲国产婷婷香蕉久久久久久| 亚洲午夜av久久乱码| 欧美最猛黑人xxxx黑人猛叫黄| 日韩电影免费观看在线| 久久免费视频观看| 欧美午夜影院在线视频| 亚洲午夜国产成人av电影男同| xxxxxxxxx欧美| 日本一区二区三区四区视频| 国产欧美日韩视频| 伊人伊成久久人综合网小说| 日韩欧美999| 久久久亚洲国产天美传媒修理工| 国产精品久久久久久久午夜| 俺也去精品视频在线观看| 在线观看国产精品日韩av| 欧美性xxxx在线播放| xxxxx91麻豆| 成人免费xxxxx在线观看| 亚洲精品乱码久久久久久金桔影视| 国产99久久精品一区二区 夜夜躁日日躁| 欧美性猛交xxxx黑人猛交| 亚洲国产天堂网精品网站| 欧美在线观看一区二区三区| 7m第一福利500精品视频| 亚洲色图在线观看| 亚洲日本中文字幕免费在线不卡| 美女久久久久久久| 成人精品视频在线| 韩国视频理论视频久久| 91视频国产精品| 日韩精品在线免费观看视频| 久久成人在线视频| 亚洲最大的av网站| 26uuu另类亚洲欧美日本老年| 久久久久亚洲精品成人网小说| 久久久视频免费观看| 亚洲成人久久一区| 欧美一区第一页| 91色在线视频| 欧美亚洲第一区| 日韩中文字幕精品视频| 亚洲欧美成人一区二区在线电影| 成人日韩av在线| 色综合久久悠悠| 亚洲精品wwww| 成人国产精品av| www国产亚洲精品久久网站| 91在线观看免费高清| 91在线视频一区| 欧美一级电影在线| 亚洲精品www久久久久久广东| 欧美成人一二三| 欧美日韩国产麻豆| 综合网日日天干夜夜久久| 日韩中文字幕在线观看| 欧美疯狂xxxx大交乱88av| 一区二区三区黄色| 欧美刺激性大交免费视频| 中文字幕久热精品视频在线| 2024亚洲男人天堂| 日韩精品在线视频美女| 欧美在线xxx| 国产午夜精品美女视频明星a级| 欧美一级大片在线观看| 日本在线观看天堂男亚洲| 色狠狠av一区二区三区香蕉蜜桃| 91成人在线视频| 国产精品国产福利国产秒拍| 国产精品∨欧美精品v日韩精品| 亚洲999一在线观看www| 尤物yw午夜国产精品视频明星| 日韩欧亚中文在线| 91极品视频在线| 久久福利网址导航| 日韩在线精品视频| 成人在线精品视频| 欧美xxxx做受欧美| 97视频在线观看网址| 欧美性xxxxx极品娇小| 最新的欧美黄色| 这里只有精品在线播放| 亚洲一级片在线看| 日韩久久精品成人| 92福利视频午夜1000合集在线观看| 欧美亚洲一级片| 国产精品永久免费观看| 亚洲跨种族黑人xxx| 国产91精品久久久久久久| 久久久亚洲福利精品午夜| 91嫩草在线视频| 中文字幕av一区中文字幕天堂| 国产精品网站大全| 亚洲男人第一网站| 国产美女91呻吟求| 日韩少妇与小伙激情| 久久久人成影片一区二区三区观看| 日韩欧美a级成人黄色| 欧美日韩国产二区| 亚洲91精品在线观看| 久久福利视频导航| 日韩成人av网址| 欧美日韩一二三四五区| 国产视频观看一区| 亚洲精品天天看| 成人午夜在线观看| 久久精品国产亚洲一区二区| 国内精品久久久久久| 国产69精品99久久久久久宅男| 国产精品91一区| 97色伦亚洲国产| 精品一区二区三区四区在线| 国产精品视频1区| 久久频这里精品99香蕉| 久久偷看各类女兵18女厕嘘嘘| 亚洲一区二区久久久久久久| 国产亚洲欧洲黄色| 亚洲在线免费视频| 性夜试看影院91社区| 欧美做爰性生交视频| 国产精品视频在线播放| 91久久精品国产91性色| 国产精品xxx视频| 欧美乱妇高清无乱码| 亚洲国产精品免费| 国产精品久久久久久久久久99| 精品国产91久久久久久老师| 夜色77av精品影院| 成人美女免费网站视频| 亚洲a成v人在线观看| 国产成人亚洲综合91| 欧美日韩中文字幕在线| 久久成人亚洲精品| 在线日韩日本国产亚洲| 亚洲视频在线免费看| 欧美日韩中文在线观看| 亚洲成人免费在线视频| 91精品久久久久久久久| 久久久久亚洲精品成人网小说| 精品性高朝久久久久久久| 国内精品美女av在线播放| 国产精品久久久久久久午夜| 粉嫩av一区二区三区免费野| 成人免费激情视频| 亚洲一区二区中文字幕| 三级精品视频久久久久| 欧洲美女7788成人免费视频| 国产91精品久久久| 午夜免费在线观看精品视频|