這篇文章主要講解了“怎么用貝葉斯分類器給圖書分類”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“怎么用貝葉斯分類器給圖書分類”吧!
成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括新民網(wǎng)站建設(shè)、新民網(wǎng)站制作、新民網(wǎng)頁(yè)制作以及新民網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,新民網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到新民省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
從問(wèn)題開(kāi)始:
我們解決的問(wèn)題是,對(duì)圖書進(jìn)行二元分類。分類的依據(jù)是圖書的tag。這樣tag可能來(lái)自專家,或者編輯,或者用戶。例如“外國(guó)文學(xué)”,“偵探”,“計(jì)算機(jī)”,“python”都屬于tag。簡(jiǎn)化問(wèn)題,我們現(xiàn)在把圖書分為“人文”或者“非人文”兩類。
例如《計(jì)算機(jī)科學(xué)導(dǎo)論》,它的tag有“計(jì)算機(jī)”,“科學(xué)”,“經(jīng)典”,“導(dǎo)論”,它屬于“非人文”。《麥田里的守望者》,它的tag有“小說(shuō)”,“文學(xué)”,“美國(guó)”,它屬于“人文”。
基本原理:
貝葉斯分類器的工作原理:
P(a|b) = P(b|a)*P(a) / P(b) 這個(gè)意思就是:想要求P(a|b),而你又知道P(b|a),P(a),P(b)的值,那你就可以通過(guò)貝葉斯公式求得
已知一本書有些tag:tag1,tag2,tag3....它屬于“人文”分類的概率是多少?屬于“非人文”分類的概率呢?
假設(shè)p1表示在這種情況下,它屬于“人文”的概率,p2表示這種情況下,它屬于“非人文”的概率。
如果p1 > p2 那么就屬于“人文”
條件概率:
其實(shí),這是一個(gè)條件概率的問(wèn)題。所謂條件概率,就是求:在已知b發(fā)生的情況下,a發(fā)生的概率,我們寫作P(a|b)
結(jié)合我們的實(shí)際問(wèn)題,那就是tag1,tag2,tag3已經(jīng)發(fā)生的情況下,這本書屬于“人文”和“非人文”的概率。我們寫做
P(人文|tag1,tag2,tag3...)的意思就是在tag1,tag2,tag3...發(fā)生的情況下,這本書屬于“人文”
P(非人文|tag1,tag2,tag3...)的意思就是在tag1,tag2,tag3...發(fā)生的情況下,這本書屬于“非人文”
P(人文|tag1,tag2,tag3...) = P(tag1,tag2,tag3...|人文) * P(人文) / P(tag1,tag2,tag3...)
==>
P(tag1,tag2,tag3...|人文) :就是你知道在一本書已經(jīng)被分類了“人文”的情況,tag1,tag2,tag3...一起出現(xiàn)的概率
P(人文):就是在被標(biāo)記為“人文”分類的書,(在訓(xùn)練集)在所有書(“人文”和“非人文”)中出現(xiàn)的概率
P(tag1,tag2,tag3...):也就是tag1,tag2,tag3...在(訓(xùn)練集)所有tag出現(xiàn)的概率
這里有個(gè)值得注意的技巧,其實(shí)P(tag1,tag2,tag3...),我們不需要計(jì)算,因?yàn)槲覀兊哪康氖潜容^
P(人文|tag1,tag2,tag3...) 和 P(非人文|tag1,tag2,tag3...) 的大小,不是為了得到實(shí)際的值,由于上述公式中分母
P(tag1,tag2,tag3...)是一樣的。所以我們只需要比較分子的大小就可以了。
P(tag1,tag2,tag3...|人文) * P(人文) 和 P(tag1,tag2,tag3...|非人文) * P(非人文)的大小
樸素貝葉斯:
那么我們?nèi)绾斡?jì)算P(tag1,tag2,tag3...|人文) 呢?這里要用到樸素貝葉斯的概念,就是說(shuō),我們認(rèn)為,在一本書中的標(biāo)簽里,每個(gè)標(biāo)簽都是相互獨(dú)立的,與對(duì)方是否出現(xiàn)沒(méi)有關(guān)系,也就是說(shuō)“計(jì)算機(jī)”和“經(jīng)典”出現(xiàn)的概率是互不相關(guān)的,不會(huì)因?yàn)槌霈F(xiàn)了“計(jì)算機(jī)”就導(dǎo)致“經(jīng)典”的出現(xiàn)概率高。
P(tag1,tag2,tag3...|人文) = P(tag1|人文) * P(tag2|人文) * P(tag3|人文) ....
也就是計(jì)算每個(gè)tag,分別在“人文”和“非人文”書籍所有tag出現(xiàn)概率,然后將它們乘
舉例分析:
我們現(xiàn)在有一本書《計(jì)算機(jī)科學(xué)導(dǎo)論》,它標(biāo)簽是“計(jì)算機(jī)”,“科學(xué)”,“理論”,“經(jīng)典”,“導(dǎo)論”我們想知道這幾個(gè)標(biāo)簽出現(xiàn)的情況下,《計(jì)算機(jī)科學(xué)導(dǎo)論》分別屬于“人文”和“非人文”的概率
那么我們已經(jīng)有了什么呢?幸運(yùn)的是,我們目前有10本書,已知其中6本是“人文”,4本“非人文”。這個(gè)10本書,經(jīng)過(guò)排重,一共有70個(gè)不同的標(biāo)簽,“計(jì)算機(jī)”,“科學(xué)”,“理論”,“導(dǎo)論”也在其中。
基于此,我們可以得出,P(人文)=6/10=0.6 P(非人文)=1-0.6=0.4 也就是說(shuō)“人文”書在所有的書的概念0.6 “非人文”是0.4
接下來(lái)就是P(tag1,tag2,tag3...|人文) 和 P(tag1,tag2,tag3...|非人文)了,也就是說(shuō),我們要算出,在“人文”類里的所有數(shù)中,“計(jì)算機(jī)”,“科學(xué)”,“理論”,“經(jīng)典”,“導(dǎo)論”這幾個(gè)tag在“人文”數(shù)所有的tag的概率
1.準(zhǔn)備訓(xùn)練集:
幾乎所有的機(jī)器學(xué)習(xí)都需要訓(xùn)練集。貝葉斯分類也是一樣的。上述,我們說(shuō)的已知的數(shù)據(jù),就是訓(xùn)練集。上面的例子列舉的10本書,以及者10本書所排重后的tag,就是我們的訓(xùn)練集;而0.6 和 0.4 這兩個(gè)概率就是P(tag1,tag2,tag3...|人文) 和 P(tag1,tag2,tag3...|非人文) 先驗(yàn)概率
基于我們的問(wèn)題,我們需要準(zhǔn)備100本書,人文分為“人文”和“非人文”兩類,并且收集將這些書的所有tag。(可以爬去亞馬遜或是豆瓣上的書籍資源)
2.形成tag集:
上述所說(shuō)的tag,用python里的列表來(lái)保存,我們令其位dicts.dicts里的每一個(gè)元素是一個(gè)tag
dicts = [“科學(xué)”,“理論”,“c++”]這樣的形式
3.計(jì)算訓(xùn)練集中的“人文”和“非人文”的概率
假設(shè)我們訓(xùn)練集中的這100本書,有60本是“人文”,那么P(人文) = 60 / 100 = 60 P(非人文) = 1 - P(人文) = 0.4
4.計(jì)算tag集中每個(gè)tag在訓(xùn)練集“人文”數(shù)據(jù)中tag出現(xiàn)的概率
首先,我們基于訓(xùn)練集構(gòu)造一個(gè)列表,這個(gè)列表里的每一項(xiàng)又是一個(gè)列表,這個(gè)列表里的每一項(xiàng),不是1就是0。1表示這個(gè)字典中這個(gè)位置的tag是這個(gè)書的一個(gè)tag
dicts=["計(jì)算機(jī)","小說(shuō)","心理","科學(xué)","編程","行為","導(dǎo)論","經(jīng)典","游記","美國(guó)",.....] tag集
tag_vector_人文 = [
[0,1,0,0,0,0,0,1,0,1], 第一本書《麥田的守望者》tag:"小說(shuō)""經(jīng)典""美國(guó)"
[0,0,1,0,0,1,0,0,0,1], 第二本書《可預(yù)測(cè)的非理性》tag:"心理","行為","美國(guó)"
[], 第三本書
......
]
tag_vector_非人文= [
[],
[],
....
]
有了這樣的數(shù)據(jù)后,我們就好計(jì)算 P(tag1|人文)。對(duì)應(yīng)tag1,我們計(jì)算出訓(xùn)練集里“人文”的所有書中,tag1出現(xiàn)的次數(shù)。
例如,在訓(xùn)練集里,“人文”有60本,其中40本都由經(jīng)典的tag,那么我們就令num_of_tag1=40,依次類推
num_of_tag2=32,num_of_tag3=18...
然后,我們求出在“人文”類,所有書的tag標(biāo)簽總數(shù),例如“人文”類2本書,第一本書的標(biāo)簽是“散文”,“經(jīng)典”,“外國(guó)”,第二本書是“經(jīng)典”,“小說(shuō)”,那么所有本tag總數(shù)是3+2=5?,F(xiàn)在我們求出訓(xùn)練集所有的100本tag的標(biāo)簽總數(shù)。假設(shè)總數(shù)是700.我們令total_人文=700
于是tag1在“人文”類里的出現(xiàn)的概率就是P(tag1|人文) = num_of_tag1 / total_人文 = 40/700=0.057
利用numpy
from numpy import * num_tags_cate1 = ones(len(dicts)) #1 total_cate1 = 2.0 #2 for item in tag_vector_cate1: num_tags_cate1 += item #3 total_cate1 += sum(item) #4 p_tags_cate1 = num_tags_cate1 / total_cate1 #5 #1 表示生成一個(gè)numpy數(shù)組,ones()是numpy的函數(shù),返回一個(gè)填充了數(shù)值為1的numpy數(shù)組。參數(shù)是這個(gè)數(shù)組的長(zhǎng)度。 例如temp=ones(3),表示生成一個(gè)numpy的數(shù)組[1,1,1]并返回給temp。所以就是以訓(xùn)練集的tag集dicts的長(zhǎng)度為參數(shù),生成一個(gè)和dicts等長(zhǎng)的填充了1的numpy數(shù)組。 #2 #3 tag_vector_cate1 是 [[],[],[]] 而item是每個(gè)元素是一個(gè)列表,長(zhǎng)度是dicts的長(zhǎng)度,表示,對(duì)應(yīng)的tag是否存在。 numpy數(shù)組 + tag_vector_cate1的結(jié)果是,對(duì)應(yīng)位置的元素相加 a是一個(gè)numpy [1,2,3,5,0] b是一個(gè)python的list [0,0,3,2,1] a + b = [1,2,6,7,1] 結(jié)果是numpy的數(shù)組 #4 把每本書出現(xiàn)的所有tag數(shù)量相加,sum(item)也是numpy的函數(shù),作用是講item里面的每一項(xiàng)相加 sum([2,5,-1]) = 2 + 5 - 1 = 6 假如item是對(duì)應(yīng)的list = [0,1,0,0,0,0,0,1,0,1] 對(duì)應(yīng)是《麥田的守望者》 相當(dāng)于總標(biāo)簽是3個(gè) #5
感謝各位的閱讀,以上就是“怎么用貝葉斯分類器給圖書分類”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)怎么用貝葉斯分類器給圖書分類這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
分享標(biāo)題:怎么用貝葉斯分類器給圖書分類
標(biāo)題路徑:http://www.rwnh.cn/article28/psgscp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、營(yíng)銷型網(wǎng)站建設(shè)、Google、微信小程序、建站公司、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)