樸素貝葉斯隨筆-python

樸素貝葉斯大家都知道了,我也就不贅述了,可參考

點擊打開鏈接

http://scikit-learn.org/stable/modules/naive_bayes.html


  • 如何使用
比如根據天氣看小J是否出去打球,統計了她過去打球的數據:
天氣 打球
晴天 no
多雲 yes
雨天 yes
晴天 yes
晴天 yes
多雲 yes
雨天 no
雨天 no
晴天 yes
雨天 yes
晴天 no
多雲 yes
多雲 yes
雨天 no
  1. 將數據集轉換爲頻率表:

天氣 不打球 打球
多雲   4
雨天 3 2
晴天 2 3
總數 5 9
2.求概率:
天氣 不打球 打球  
多雲   4 0.29
雨天 3 2 0.36
晴天 2 3 0.36
總數 5 9  
  0.36 0.64  
3.帶入貝葉斯:
P(打球|晴天) = P(晴天|打球)·P(打球)/P(晴天) = (3/9)·0.64/0.36 = 0.59
所以在晴天打球的概率有0.59

  • 應用
1.實時預測
2.多類別預測
3.文本分類/垃圾過濾/情感分析
4.推薦系統

  • 採用python構建基本模型(採用sklearn包)
包含三類模型:
1.Gaussian:分類中假設數據特徵符合正態分佈
2.Multinomial:用於離散數據計數,比如文本分類問題中統計一篇文章中的詞頻數
3.Bernoulli:二分類問題,比如文本分類中,文章中一個詞出現還是不出現
  • python案例
構造數據:
#Import Library of Gaussian Naive Bayes model
from sklearn.naive_bayes import GaussianNB
import numpy as np

#assigning predictor and target variables
x = np.array([[-3,7],[1,5], [1,2], [-2,0], [2,3], [-4,0], [-1,1], [1,1], [-2,2], [2,7], [-4,1], [-2,7]])
y = np.array([3, 3, 3, 3, 4, 3, 3, 4, 3, 4, 4, 4])
構造模型:
#Create a Gaussian Classifier
model = GaussianNB()

# Train the model using the training sets 
model.fit(x, y)

#Predict Output 
predicted= model.predict([[1,2],[3,4]])
print predicted

輸出爲預測結果:[3, 4]

  • 提升貝葉斯表現
1. 如果連續型數據但是不滿足正態分佈,則將其轉化爲符合正態分佈的數據
2. 如果測試數據特徵出現頻率爲0的數據,就用平滑技術“拉普拉斯變換”來進行預測
3. 刪除相關聯的特徵,可能造成過擬合
4. 注意各個參數選項的影響,建議在數據與處理和特徵選擇階段處理參數問題
5. 集成、提升、裝袋方法由於目的是減小方差,所以對於樸素貝葉斯沒有任何幫助

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章