1. 程式人生 > >樸素貝葉斯隨筆-python

樸素貝葉斯隨筆-python

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

  • 如何使用
比如根據天氣看小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. 整合、提升、裝袋方法由於目的是減小方差,所以對於樸素貝葉斯沒有任何幫助