久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么用貝葉斯分類器給圖書分類

194次閱讀
沒有評論

共計 3824 個字符,預計需要花費 10 分鐘才能閱讀完成。

這篇文章主要講解了“怎么用貝葉斯分類器給圖書分類”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“怎么用貝葉斯分類器給圖書分類”吧!

從問題開始:

我們解決的問題是,對圖書進行二元分類。分類的依據是圖書的 tag。這樣 tag 可能來自專家,或者編輯,或者用戶。例如“外國文學”,“偵探”,“計算機”,“python”都屬于 tag。簡化問題,我們現在把圖書分為“人文”或者“非人文”兩類。

例如《計算機科學導論》,它的 tag 有“計算機”,“科學”,“經典”,“導論”,它屬于“非人文”。《麥田里的守望者》,它的 tag 有“小說”,“文學”,“美國”,它屬于“人文”。

基本原理:

貝葉斯分類器的工作原理:

P(a|b) = P(b|a)*P(a) / P(b)
這個意思就是:想要求 P(a|b),而你又知道 P(b|a),P(a),P(b)的值,那你就可以通過貝葉斯公式求得

已知一本書有些 tag:tag1,tag2,tag3…. 它屬于“人文”分類的概率是多少?屬于“非人文”分類的概率呢?

假設 p1 表示在這種情況下,它屬于“人文”的概率,p2 表示這種情況下,它屬于“非人文”的概率。

如果 p1 p2 那么就屬于“人文”

條件概率:

其實,這是一個條件概率的問題。所謂條件概率,就是求:在已知 b 發生的情況下,a 發生的概率,我們寫作 P(a|b)

結合我們的實際問題,那就是 tag1,tag2,tag3 已經發生的情況下,這本書屬于“人文”和“非人文”的概率。我們寫做

P(人文 |tag1,tag2,tag3…)的意思就是在 tag1,tag2,tag3… 發生的情況下,這本書屬于“人文”

P(非人文 |tag1,tag2,tag3…)的意思就是在 tag1,tag2,tag3… 發生的情況下,這本書屬于“非人文”

P(人文 |tag1,tag2,tag3…) = P(tag1,tag2,tag3…| 人文) * P(人文) / P(tag1,tag2,tag3…)

==

P(tag1,tag2,tag3…| 人文) : 就是你知道在一本書已經被分類了“人文”的情況,tag1,tag2,tag3… 一起出現的概率

P(人文): 就是在被標記為“人文”分類的書,(在訓練集)在所有書 (“人文”和“非人文”) 中出現的概率

P(tag1,tag2,tag3…): 也就是 tag1,tag2,tag3… 在 (訓練集) 所有 tag 出現的概率

這里有個值得注意的技巧,其實 P(tag1,tag2,tag3…),我們不需要計算,因為我們的目的是比較

P(人文 |tag1,tag2,tag3…)   和  P(非人文 |tag1,tag2,tag3…) 的大小,不是為了得到實際的值,由于上述公式中分母

P(tag1,tag2,tag3…)是一樣的。所以我們只需要比較分子的大小就可以了。

P(tag1,tag2,tag3…| 人文) * P(人文)   和  P(tag1,tag2,tag3…| 非人文) * P(非人文)的大小

樸素貝葉斯:

那么我們如何計算 P(tag1,tag2,tag3…| 人文) 呢?這里要用到樸素貝葉斯的概念,就是說,我們認為,在一本書中的標簽里,每個標簽都是相互獨立的,與對方是否出現沒有關系,也就是說“計算機”和“經典”出現的概率是互不相關的,不會因為出現了“計算機”就導致“經典”的出現概率高。

P(tag1,tag2,tag3…| 人文)  = P(tag1| 人文) * P(tag2| 人文) * P(tag3| 人文) ….

也就是計算每個 tag,分別在“人文”和“非人文”書籍所有 tag 出現概率,然后將它們乘

舉例分析:

我們現在有一本書《計算機科學導論》,它標簽是“計算機”,“科學”,“理論”,“經典”,“導論”我們想知道這幾個標簽出現的情況下,《計算機科學導論》分別屬于“人文”和“非人文”的概率

那么我們已經有了什么呢?幸運的是,我們目前有 10 本書,已知其中 6 本是“人文”,4 本“非人文”。這個 10 本書,經過排重,一共有 70 個不同的標簽,“計算機”,“科學”,“理論”,“導論”也在其中。

基于此,我們可以得出,P(人文)=6/10=0.6  P(非人文)=1-0.6=0.4 也就是說“人文”書在所有的書的概念 0.6“非人文”是 0.4

接下來就是 P(tag1,tag2,tag3…| 人文) 和  P(tag1,tag2,tag3…| 非人文)了,也就是說,我們要算出,在“人文”類里的所有數中,“計算機”,“科學”,“理論”,“經典”,“導論”這幾個 tag 在“人文”數所有的 tag 的概率

1. 準備訓練集:

幾乎所有的機器學習都需要訓練集。貝葉斯分類也是一樣的。上述,我們說的已知的數據,就是訓練集。上面的例子列舉的 10 本書,以及者 10 本書所排重后的 tag,就是我們的訓練集;而 0.6 和 0.4 這兩個概率就是 P(tag1,tag2,tag3…| 人文) 和  P(tag1,tag2,tag3…| 非人文) 先驗概率

基于我們的問題,我們需要準備 100 本書,人文分為“人文”和“非人文”兩類,并且收集將這些書的所有 tag。(可以爬去亞馬遜或是豆瓣上的書籍資源)

2. 形成 tag 集:

上述所說的 tag,用 python 里的列表來保存,我們令其位 dicts.dicts 里的每一個元素是一個 tag

dicts = [“科學”,“理論”,“c++”]這樣的形式

3. 計算訓練集中的“人文”和“非人文”的概率

假設我們訓練集中的這 100 本書,有 60 本是“人文”,那么 P(人文) = 60 / 100 = 60 P(非人文) = 1 – P(人文) = 0.4

4. 計算 tag 集中每個 tag 在訓練集“人文”數據中 tag 出現的概率

首先,我們基于訓練集構造一個列表,這個列表里的每一項又是一個列表,這個列表里的每一項,不是 1 就是 0。1 表示這個字典中這個位置的 tag 是這個書的一個 tag

dicts=[計算機 , 小說 , 心理 , 科學 , 編程 , 行為 , 導論 , 經典 , 游記 , 美國 ,…..]   tag 集

tag_vector_人文 = [

 [0,1,0,0,0,0,0,1,0,1],  第一本書《麥田的守望者》tag: 小說 經典 美國

 [0,0,1,0,0,1,0,0,0,1],  第二本書《可預測的非理性》tag: 心理 , 行為 , 美國

 [],  第三本書

……

tag_vector_非人文 = [

 [],

 [],

 ….

]

有了這樣的數據后,我們就好計算 P(tag1| 人文)。對應 tag1,我們計算出訓練集里“人文”的所有書中,tag1 出現的次數。

例如,在訓練集里,“人文”有 60 本,其中 40 本都由經典的 tag,那么我們就令 num_of_tag1=40, 依次類推

num_of_tag2=32,num_of_tag3=18…

然后,我們求出在“人文”類,所有書的 tag 標簽總數,例如“人文”類 2 本書,第一本書的標簽是“散文”,“經典”,“外國”,第二本書是“經典”,“小說”,那么所有本 tag 總數是 3 +2=5。現在我們求出訓練集所有的 100 本 tag 的標簽總數。假設總數是 700. 我們令 total_人文 =700

于是 tag1 在“人文”類里的出現的概率就是 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  表示生成一個 numpy 數組,ones()是 numpy 的函數,返回一個填充了數值為 1 的 numpy 數組。參數是這個數組的長度。例如 temp=ones(3), 表示生成一個 numpy 的數組 [1,1,1] 并返回給 temp。所以就是以訓練集的 tag 集 dicts 的長度為參數,生成一個和 dicts 等長的填充了 1 的 numpy 數組。#2 
#3 tag_vector_cate1  是  [[],[],[]]  而 item 是每個元素是一個列表,長度是 dicts 的長度,表示,對應的 tag 是否存在。 numpy 數組  + tag_vector_cate1 的結果是,對應位置的元素相加
 a 是一個 numpy [1,2,3,5,0] b 是一個 python 的 list [0,0,3,2,1] a + b = [1,2,6,7,1]  結果是 numpy 的數組
#4  把每本書出現的所有 tag 數量相加,sum(item)也是 numpy 的函數,作用是講 item 里面的每一項相加
 sum([2,5,-1]) = 2 + 5 - 1 = 6
  假如 item 是對應的 list = [0,1,0,0,0,0,0,1,0,1]  對應是《麥田的守望者》  相當于總標簽是 3 個
 
#5

感謝各位的閱讀,以上就是“怎么用貝葉斯分類器給圖書分類”的內容了,經過本文的學習后,相信大家對怎么用貝葉斯分類器給圖書分類這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計3824字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 得荣县| 安平县| 平安县| 衡东县| 黄大仙区| 安庆市| 永嘉县| 章丘市| 潜江市| 盘山县| 达拉特旗| 启东市| 吴川市| 遂平县| 公安县| 额敏县| 渭源县| 米林县| 玛曲县| 蒲江县| 南丰县| 太谷县| 丹东市| 丹巴县| 赞皇县| 灵山县| 广西| 绥宁县| 盈江县| 清徐县| 武乡县| 安阳市| 云龙县| 陇川县| 纳雍县| 宽甸| 南木林县| 潼关县| 江津市| 内江市| 长泰县|