xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 249KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-28
  • 語言: Python
  • 標簽: Python??

資源簡介

壓縮包中包括python腳本和一個PPT。 在UtralEdit中打開這兩個腳本NBayes_lib.py和NBayes_test.py就可以查看腳本,然后運行NBayes_test.py這個腳本就可以得到測試集文本1的分類結果是0 PPT詳解了樸素貝葉斯算法的原理以及這個文本分類器的程序思想和運行結果詳解,希望對你能夠有幫助,如果有任何問題,請留言!

資源截圖

代碼片段和文件信息

#encoding:?utf-8
import?numpy?as?np
from?numpy?import?*

#postingList?是訓練文本,classVec?是每個文本對應的分類
def?loadDataSet():
postingList?=?[[‘my‘‘dog‘‘has‘‘false‘‘problems‘‘help‘‘please‘]
???????????????[‘maybe‘‘not‘‘take‘‘him‘‘to‘‘dog‘‘park‘‘stupid‘]
???????????????[‘my‘‘dalmation‘‘is‘‘so‘‘cute‘‘I‘‘love‘‘him‘‘my‘]
???????????????[‘stop‘‘posting‘‘stupid‘‘worthless‘‘garbage‘]
???????????????[‘mr‘‘licks‘‘ate‘‘my‘‘steak‘‘how‘‘to‘‘stop‘‘him‘]
???????????????[‘quit‘‘buying‘‘worthless‘‘dog‘‘food‘‘stupid‘]]
classVec?=?[010101]????#‘1‘?is?abusive??‘0‘?is?not
return?postingListclassVec

#貝葉斯算法類

class?NBayes(object):

#定義方法,方法的第一個參數必須是self,self是指類實例對象本身
def?__init__(self):
self.vocabulary?=?[]???#詞典?詞典是個鍵值對?eg.?dict={‘Alice‘:‘wo‘‘Jimmy‘:‘ta‘}
self.idf?=?0?????????????#詞典的IDF權值向量
self.tf?=?0??????????????#訓練集的權值矩陣
self.tdm?=?0?????????????#P(x|yi)
self.Pcates?=?{}?????????????#P(yi)是一個類別字典?key-value
self.labels?=?[]?????????#對應每個文本的分類,是一個外部導入的列表
self.doclength?=?0???????#訓練集文本數
self.vocablen?=?0????????#詞典詞長
self.testset?=?0?????????#測試集
????????????
#導入和訓練數據集,生成算法必須的參數和數據結構 ????????????
????????????
def?train_set(selftrainsetclassVec):
self.cate_prob(classVec)?#計算每個分類在測試集中的概率P(yi)
self.doclength?=?len(trainset)
tempset?=?set()??????????#無序不重復元素集??set([])
[tempset.add(word)?for?doc?in?trainset?for?word?in?doc]?#生成詞典?
self.vocabulary?=?list(tempset)
self.vocablen?=?len(self.vocabulary)
self.calc_wordfreq(trainset)?#計算次品數據集
self.build_tdm()?????????#按分類累計向量空間的每維值P(x|yi)
?? ????????
#cate_prob函數:計算在數據集中每個分類的概率P(yi)

def?cate_prob(selfclassVec):
self.labels?=?classVec
labeltemps?=?set(self.labels)#獲取全部分類
for?labeltemp?in?labeltemps:
?? self.Pcates[labeltemp]?=?float(self.labels.count(labeltemp))/float(len(self.labels))
?? ????????
#calc_wordfreq函數:生成普通的詞頻向量
def?calc_wordfreq(selftrainset):??????????????????????????
self.idf=np.zeros([1self.vocablen])?????????????#1*詞典數
self.tf=np.zeros([self.doclengthself.vocablen])?#訓練集文件數*詞典數?
for?indx?in?xrange(self.doclength):??
for?word?in?trainset[indx]:
??#找到文本的詞在字典中的位置
self.tf[indxself.vocabulary.index(word)]?+=?1????????????????#是個6*31字典中單詞在每個文本中出現大的次數
#消除不同句長導致的偏差
self.tf[indx]=self.tf[indx]/float(len(trainset[indx]))
for?signleword?in?set(trainset[indx]):
?? self.idf[0self.vocabulary.index(signleword)]?+=?1?? #是個1*31的,字典中的單詞在所有文本中出現的次數????
self.idf?=?np.log(float(self.doclength)/self.idf)?
self.tf?=?np.multiply(self.tfself.idf)????#矩陣與向量的點乘TF*IDF
#build_tdm函數:按分類累計計算向量空間的每維值P(x|yi)??
def?build_tdm(self):
self.tdm=np.zeros([len(self.Pcates)self.vocablen])??#類別行*詞典列???
sumlist=np.zeros([len(self.Pcates)1])???#統計每個分類的總值
for?indx?in?xrange(self.doclength):
#將同一類別的詞向量空間值加總
self.tdm[self.labels[indx]]+=self.tf[indx]
#統計每個分類的總值——是一個標量
sumlist[self.labels[indx]]=np.sum(self.tdm[sel

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????4311??2016-01-27?16:49??新建文件夾\NBayes_lib.py

?????文件???????4331??2016-01-27?16:49??新建文件夾\NBayes_lib.py.bak

?????文件???????4099??2016-01-27?16:49??新建文件夾\NBayes_lib.pyc

?????文件????????407??2016-01-26?19:43??新建文件夾\NBayes_test

?????文件????????409??2016-01-27?16:25??新建文件夾\NBayes_test.py

?????文件????????409??2016-01-27?16:23??新建文件夾\NBayes_test.py.bak

?????文件?????302144??2016-01-27?16:50??新建文件夾\樸素貝葉斯算法報告.pptx

?????目錄??????????0??2016-01-27?16:51??新建文件夾

-----------?---------??----------?-----??----

???????????????316110????????????????????8


評論

共有 條評論