樸素貝葉斯分類演算法python實現
阿新 • • 發佈:2018-12-27
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])