歡迎光臨
每天分享高質量文章

【演演算法】樸素貝葉斯法

筆者邀請您,先思考:

1 您怎麼理解樸素貝葉斯法?

2 樸素貝葉斯法的優劣是什麼?


 

樸素貝葉斯演演算法

  樸素貝葉斯是一種簡單但是非常強大的線性分類器,它在垃圾郵件分類,疾病診斷中都取得了很大的成功。

  它只所以稱為樸素,是因為它假設特徵之間是相互獨立的

樸素貝葉斯的數學原理

    1.後驗機率(Posterior Probabilities):

    為了更好地瞭解樸素貝葉斯分類器是怎麼工作的,瞭解貝葉斯法則是很必要的。它可以被簡單地描述成下麵的公式:

      後驗機率=(條件機率∗先驗機率現象機率)/(現象機率)

舉一個簡單的例子說明:

     P(給定天上有烏雲,下雨的機率)=(P(給定天上下雨,有烏雲的機率)P(下雨的機率))/P(有烏雲的機率)

          ωj表示屬於哪個類別,j∈{1,2,3,…,m}

xi表示特徵向量中的第i個特徵,i∈{1,2,3,…,n}

樸素貝葉斯的標的就是分別求得P(ωj|給定現象)j∈{1,2,3,…,m},選出最大的機率。

    樸素貝葉斯分類是將實體分到後驗機率最大的類中。這等價於期望風險最小化。這就是樸素貝葉斯法所採用的原理。

條件機率公式:

實戰程式碼

from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split
from sklearn import datasets
from sklearn import cross_validation
def load_data():
   iris = datasets.load_iris()
   return cross_validation.train_test_split(iris.data,iris.target,test_size=0.25,random_state=0)

def test_naive_bayes(*data):
   # 模型初始化
   X_train,X_test,Y_train,Y_test=data
   clf = GaussianNB()
   clf.fit(X_train, Y_train)
   # 預測結果
   Y_prict = clf.predict(X_test)
   # 計算準確率
   cnt = 0
   for i in range(len(Y_test)):
       if Y_prict[i] – Y_test[i] < 1e-1:
           cnt += 1
       # print(ans[i], ‘ ‘, y_test[i])
   print(“Accuracy: “, (cnt * 100.0 / len(Y_test)), “%”)
   print(‘Score:%f’%clf.score(X_test,Y_test))

if  __name__==’__main__’:
   X_train,X_test,Y_train,Y_test=load_data()
   test_naive_bayes(X_train,X_test,Y_train,Y_test)

Accuracy:  100.0 %

Score:1.000000


文章推薦:

1 LDA演演算法及應用

word2vec與doc2vec模型


您有什麼見解,請留言。

加入資料人圈子或者商務合作,請新增筆者微信。

資料人網是資料人學習、交流和分享的平臺http://shujuren.org 。專註於從資料中學習到有用知識。
平臺的理念:人人投稿,知識共享;人人分析,洞見驅動;智慧聚合,普惠人人。
您在資料人網平臺,可以1)學習資料知識;2)建立資料部落格;3)認識資料朋友;4)尋找資料工作;5)找到其它與資料相關的乾貨。
我們努力堅持做原創,聚合和分享優質的省時的資料知識!
我們都是資料人,資料是有價值的,堅定不移地實現從資料到商業價值的轉換!


點選閱讀原文,進入資料人網,獲取資料知識。




公眾號推薦:

區塊鏈傳達,專註於分享區塊鏈內容

腳印英語,專註於分享英語口語內容




贊(0)

分享創造快樂

© 2024 知識星球   網站地圖