1. 程式人生 > >第五篇:樸素貝葉斯分類演算法原理分析與程式碼實現

第五篇:樸素貝葉斯分類演算法原理分析與程式碼實現

複製程式碼
 1 #====================================
 2 #    輸入:
 3 #
 4 #    輸出:
 5 #        postingList:    文件列表
 6 #        classVec:        分類標籤列表
 7 #====================================
 8 def loadDataSet():
 9     '建立測試資料'
10     
11     # 這組資料是從斑點狗論壇獲取的
12     postingList=[['my', 'dog', 'has', '
flea', 'problems', 'help', 'please'], 13 ['maybe', 'not', 'take', 'him', 'to', 'dog', 'park', 'stupid'], 14 ['my', 'dalmation', 'is', 'so', 'cute', 'I', 'love', 'him'], 15 ['stop', 'posting', 'stupid', 'worthless', 'garbage'], 16 ['
mr', 'licks', 'ate', 'my', 'steak', 'how', 'to', 'stop', 'him'], 17 ['quit', 'buying', 'worthless', 'dog', 'food', 'stupid']] 18 19 # 1 表示帶敏感詞彙 20 classVec = [0,1,0,1,0,1] 21 22 return postingList,classVec 23 24 #==================================== 25 # 輸入:
26 # dataSet: 文件列表 27 # 輸出: 28 # list(vocabSet): 詞彙表 29 #==================================== 30 def createVocabList(dataSet): 31 '建立詞彙表' 32 33 vocabSet = set([]) 34 for document in dataSet: # 遍歷文件列表 35 # 首先將當前文件的單詞唯一化,然後以交集的方式加入到儲存詞彙的集合中。 36 vocabSet = vocabSet | set(document) 37 38 return list(vocabSet) 39 40 #==================================== 41 # 輸入: 42 # vocabList: 詞彙表 43 # inputSet: 待轉換文件 44 # 輸出: 45 # returnVec: 轉換結果 - 詞向量 46 #==================================== 47 def setOfWords2Vec(vocabList, inputSet): 48 '將文件轉換為詞向量' 49 50 returnVec = [0]*len(vocabList) 51 for word in inputSet: 52 if word in vocabList: 53 returnVec[vocabList.index(word)] = 1 54 else: print "單詞: %s不在詞彙表當中" % word 55 return returnVec 56 57 def test(): 58 '測試' 59 60 listOPosts, listClasses = loadDataSet() 61 myVocabList = createVocabList(listOPosts) 62 print setOfWords2Vec(myVocabList, listOPosts[0])
複製程式碼