朴素貝葉斯算法


朴素貝葉斯算法 👉 naive_bayes.MultinomialNB

朴素貝葉斯算法,主要用於分類. 例如:需要對垃圾郵件進行分類

 

分類思想 , 如何分類 , 分類的評判標准???

 

 

 

 預測文章的類別概率, 預測某個樣本屬於 N個目標分類的相應概率,找出最大的可能性.也就是找出准確率最高的.

 


 

概率基礎 :

  概率定義為 一件事情發生的可能性. 例如: 扔一枚硬幣,結果是頭像朝上. 又或者 明天是晴天

  有這樣一個樣本數據,要我們算出如下結果.

 

 

  1. 女神喜歡的概率? (4/7)
  2. 職業是程序員, 並且體型勻稱的概率? (3/7*4/7)
  3. 在女神喜歡的條件下,職業是程序員的概率? (2/4)
  4. 在女神喜歡的條件下,職業是產品, 體重是超重的概率? (2/4*1/4=1/8)

聯合概率和條件概率:

  聯合概率 :

    包含多個條件,且所有條件同時成立的概率,記作: P(A,B) ; P(A,B)=P(A)P(B)

  條件概率:

    事件A在另外一個事件B已經發生條件下的發生概率,記作P(A|B);P(A1,A2|B)=P(A1|B)P(A2|B)

    此條件概率的成立, 是由於A1,A2相互獨立的結果. (即所有特征之間是條件獨立的)


朴素貝葉斯介紹

  • 前提就是  特征獨立
  • 最常用在文檔分類的問題中. P(科技|文檔), P(娛樂|文檔)...

貝葉斯公式:

 

 

 公式分為三部分:

  P(C) : 每個文檔類別的概率 (某文檔類別數/總文檔數量).

  P(W|C) : 給定類別下的特征 (被預測文檔中出現的詞) 的概率.

計算方法:

  P(F1|C) = Ni/N (訓練文檔中去計算)

  Ni 為該F1詞在C類別所有文檔中出現的次數.

  N 為所屬類別C下的文檔所有詞出現的次數和P(F1,F2,...)預測文檔中每個詞的概率.

 


 

 

 

從上面的例子我們得到娛樂概率為0, 這是不合理的. 如果詞頻列表里面有很多出現次數都為0. 很可能計算結果都為零!!!

解決方法 : 拉普拉斯平滑

 

 

 添加了拉普拉斯平滑系數,那么值會變大,但是不影響結果並改變了結果為0的值不為零.


sklearn 朴素貝葉斯API

sklearn.naive_bayes.MultinomialNB MultinomialNB(alpha = 1.0) 
        朴素貝葉斯分類 
        alpha:拉普拉斯平滑系數,默認為1.0

 

案例 :案例 :案例 :案例 :

 

# 案例: sklearn 20類新聞分類
# 20個新聞組數據集包含20個主題的18000個帖子

# 流程
# 1. 加載20類新聞數據,並進行分割
# 2. 生成文章特征詞
# 3. 朴素貝葉斯estimator 流程進行預估

# 代碼
from sklearn.datasets import fetch_20newsgroups   # 20類新聞數據
from sklearn.model_selection import train_test_split   # 數據分割API
from sklearn.feature_extraction.text import TfidfVectorizer  # 特征抽取API from sklearn.naive_bayes import MultinomialNB  # 朴素貝葉斯API
# 1.獲取所有數據 news = fetch_20newsgroups(subset='all') # 2.進行數據分割 x_train, x_test, y_train, y_test = train_test_split(news.data, news.target, test_size=0.25)
# 👆 先分割是因為不知道要預測哪些值,所以先分割
# 3.對數據集進行特征抽取 tf = TfidfVectorizer() # 以訓練集當中的詞的列表進行每篇文章重要性統計 x_train = tf.fit_transform(x_train) x_test = tf.transform(x_test) # 4.進行朴素貝葉斯算法 bys = MultinomialNB(alpha=0.1) bys.fit(x_train, y_train) # 5.進行預測 y_predict = bys.predict(x_test) print("預測的文章類別為:", y_predict) print("准確率為:", bys.score(x_test, y_test))

 

 

 


 

 

朴素貝葉斯算法總結:

優點:

  • 朴素貝葉斯模型發源於古典數學理論,有穩定的分類效率。
  • 對缺失數據不敏感,算法也比較簡單,常用於文本分類。
  • 分類准確度高,速度快。

缺點:

  • 由於使用樣本獨立性假設,所以 如果樣本屬性有關聯時 其效果不好。
  • 因為是使用訓練集中的數據進行統計詞,所以訓練集的准確度對結果的影響很大。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM