資源簡介
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個文件信息
評論
共有 條評論