基於貝葉斯定理的算法——樸素貝葉斯分類

2021-01-18 Stata and Python數據分析

本文作者:王   歌

文字編輯:孫曉玲

通過前面的介紹我們知道,KNN和決策樹這兩種算法雖然簡單易懂,這兩種算法在數據量較大時複雜度很高,一般只用在數據量較小的情況下,這樣數據可以放入內存中運行。不過今天我們介紹的樸素貝葉斯分類器通過獨立假設簡化了概率的計算,節省了內存,可以很好地用於數據量大的情況。下面我們首先來了解這一算法的數理背景——貝葉斯定理。這一算法是由我們在概率論中學到的貝葉斯定理延伸出來的。我們知道貝葉斯公式為:

其中,為先驗概率,為後驗概率。而樸素貝葉斯就是要在先驗概率的基礎上將每個樣本都歸入後驗概率最大的那一類中,由於P(A|B)難以從有限的訓練樣本中估計得到,因此採用了條件獨立性假設——每個屬性獨立的對分類結果產生影響,這也是樸素貝葉斯中「樸素」二字的含義,它構成了這一分類的前提。要使後驗概率最大,由於屬性和類別數都是不變的,因此只要使上式的分母最大,即:

這就是樸素貝葉斯的推導式,對於不同的先驗條件可以計算得到不同的模型,然後就可以利用得到的模型進行預測。


我們對樸素貝葉斯的原理已經有了了解,下面我們使用sklearn庫中的GaussianNB()來實現。這裡我們使用的數據依然是自帶的鳶尾花數據。程序如下:
from sklearn.datasets import load_irisfrom sklearn.model_selection import train_test_splitfrom sklearn.naive_bayes import GaussianNBfrom sklearn.metrics import accuracy_score 
iris_sample = load_iris()x_train, x_test, y_train, y_test = train_test_split(iris_sample.data, iris_sample.target, test_size=0.25, random_state=123)nbclf = GaussianNB()nbclf.fit(x_train, y_train)y_test_pre = nbclf.predict(x_test)score = accuracy_score(y_test, y_test_pre) print('測試集預測結果為:', y_test_pre)print('測試集正確結果為:', y_test)print('測試集準確度為:', score)

分類結果及準確率如圖:

在sklearn.naive中提供了三個分類器,分別為GaussianNB()、MultinomialNB()和ComplementNB()。我們來分別看看這三個類的參數。GaussianNB假設特徵的先驗概率為正態分布,主要參數只有一個先驗概率priors並默認不給出。該類有三種預測方法,最常用的predict方法直接給出測試集的預測類別,predict_proba給出測試集樣本在各個類別上預測的概率,predict_log_proba則會給出predict_proba的一個對數轉化。此外它還有一個partial_fit方法,如果訓練集數據量非常大,不能一次全部載入內存,使用這個方法可以把訓練集分成若干等分,重複調用partial_fit來一步步地學習訓練集。但與前面的算法類不同,naive中的類都沒有計算準確率的方法。MultinomialNB假設特徵的先驗概率為多項式分布,即:

這個類中有三個參數,參數alpha即為上式中的α,默認取1,此時也稱為拉普拉斯平滑;fit_prior表示是否要考慮先驗概率,默認為True,當選擇False時所有的樣本類別輸出都有相同的類別先驗概率;class_prior用來輸入先驗概率,默認為None。該類所具有的預測方法與GaussianNB相同。

(3)BernoulliNB

BernoulliNB假設特徵的先驗概率為伯努利二項分布,它一共有4個參數,其中3個參數和MultinomialNB完全相同,剩下的那個參數binarize,當不傳入取值時則將每個特徵都看作二元,當傳入數值時將小於binarize的歸為一類,大於binarize歸為另一類。此類的預測方法也與前兩種一致。

如果樣本特徵大部分是連續值,一般會使用GaussianNB;如果樣本特徵大部分是多元離散值,則會使用MultinomialNB;而如果樣本特徵是二元離散值或者很稀疏的多元離散值,應該使用BernoulliNB

以上就是我們對樸素貝葉斯分類器的介紹。

對我們的推文累計打賞超過1000元,我們即可給您開具發票,發票類別為「諮詢費」。用心做事,不負您的支持!

爬取東方財富網當日股票交易情況

stata調用python爬取時間數據——借他山之石以攻玉

Stata有問必答環節

從流調數據中尋找感染真相

熟悉又陌生的reshape

NBA球員薪資分析——基於隨機森林算法(一)

高亮輸出之唐詩作者

微信公眾號「Stata and Python數據分析」分享實用的stata、python等軟體的數據處理知識,歡迎轉載、打賞。我們是由李春濤教授領導下的研究生及本科生組成的大數據處理和分析團隊。

此外,歡迎大家踴躍投稿,介紹一些關於stata和python的數據處理和分析技巧。投稿郵箱:statatraining@163.com投稿要求:
1)必須原創,禁止抄襲;
2)必須準確,詳細,有例子,有截圖;
注意事項:
1)所有投稿都會經過本公眾號運營團隊成員的審核,審核通過才可錄用,一經錄用,會在該推文裡為作者署名,並有賞金分成。
2)郵件請註明投稿,郵件名稱為「投稿+推文名稱」。
3)應廣大讀者要求,現開通有償問答服務,如果大家遇到有關數據處理、分析等問題,可以在公眾號中提出,只需支付少量賞金,我們會在後期的推文裡給予解答。

Long-press QR code to transfer me a reward

As required by Apple's new policy, the Reward feature has been disabled on Weixin for iOS. You can still reward an Official Account by transferring money via QR code.

相關焦點

  • 機器學習算法之樸素貝葉斯
    一、貝葉斯定理貝葉斯定理由英國數學家貝葉斯(Thomas Bayes 1702-1761)發展用來描述兩個條件概率之間的關係在B條件下A發生的概率: P(A∣B)=P(AB)/P(B)在A條件下B發生的概率: P(B∣A)=P(AB)/P
  • 為什麼樸素貝葉斯定理會被叫做樸素的?
    樸素貝葉斯算法是一種基於著名貝葉斯定理的分類算法。那麼讓我們先了解一下Bayes定理是怎麼說的,並為樸素貝葉斯算法定理建立自己的理解,它是如何工作的,它為什麼被稱作樸素的?貝葉斯定理在深入研究貝葉斯定理之前,我們需要了解一些術語-獨立事件和從屬事件邊際概率聯合概率條件概率獨立事件和從屬事件考慮兩個事件A和B。
  • 樸素貝葉斯與文本分類
    樸素貝葉斯 (Naive Bayesian algorithm) 是一種基於概率統計的分類方法,主要用到了貝葉斯定理和特徵條件獨立性假設。樸素貝葉斯具有悠久的歷史,其算法邏輯比較簡單,有健壯的性能,通常可以用於文本分類、信用評估等方面。
  • 樸素貝葉斯算法及其應用
    在這篇文章中,我們將嘗試以簡單的方式理解什麼是樸素貝葉斯,它是如何工作的以及我們如何應用樸素貝葉斯分類器將文本或評論分類為「肯定」或「否定」,我們將通過電影評論案例進行研究。什麼是樸素貝葉斯?貝葉斯定理是由Reverend Bayes開發的最早的概率推理算法之一(他過去常常嘗試推斷上帝的存在)並且對於某些用例仍然表現得非常好。
  • python實現高斯樸素貝葉斯分類器
    python實現高斯樸素貝葉斯分類器    在這篇文章中,我們將使用我最喜歡的機器學習庫scikit-learn在Python中實現樸素貝葉斯分類器。接下來,我們將使用經過訓練的樸素貝葉斯(監督分類法)模型來預測人口收入。
  • 科普丨樸素貝葉斯了解一下
    要理解樸素貝葉斯,我們首先需要了解貝葉斯推斷。貝葉斯推斷是一種用貝葉斯定理來迭代假設概率的方法。貝葉斯定理是在掌握與相關事件的先決信息下,計算該事件的概率。假設你想計算星期天下午5點得到一個停車位的概率。那麼你如何計算這一事件的概率呢?是的,貝葉斯定理!數學上貝葉斯定理寫為:這裡"B"是一個條件,"A"是一個事件。
  • 基於人工智慧的貝葉斯分類算法
    基於人工智慧的貝葉斯分類算法  貝爾斯算法的應用:  1.百度實時路況  2.騰訊新聞分類  3.數據清洗:數據補全  4.數據歸類  5.垃圾郵箱  什麼是貝爾斯算法  貝爾斯算法就是貝葉斯所研究的逆向概率: 給出一個條件
  • 聚類算法簡析(一):樸素貝葉斯算法的場景案例
    本文作者通過一些場景案例,帶領大家了解一下樸素貝葉斯算法作為聚類算法中的一員,如何來區分各類數組。通過一組參數模型來區分互斥群組中的個體十分常見,我們可以使用樸素貝葉斯分析來應用於這種場景,取決於模型的相似矩陣算法常常運用在估算決策論框架的矩陣中。
  • 樸素貝葉斯(Naive Bayes)和校正曲線(Calibration Curve)
    算法回顧圖片來源:medium.com貝葉斯分類算法屬於有監督機器學習(Supervised Learning)。貝葉斯分類器是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎,故統稱為貝葉斯分類。其中樸素貝葉斯分分類是貝葉斯分類中最簡單的,也是最常見的一種分類方法。樸素貝葉斯分類算法的核心如下公式:P(A):它是先驗(Prior Probability),是A發生的概率。P(B): 是邊際可能性(Marginal Likelihood):是B發生的概率。
  • 形象理解貝葉斯定理
    貝葉斯定理貝葉斯定理是一種基於某些概率的先驗知識來預測起源或來源的方法我們已經知道P(B | A)= P(A∩B)/ P(A),假設兩個相關事件的P(A)≠0。有沒有想過P(A | B)=?貝葉斯定理的應用由於其預測性,我們使用貝葉斯定理推導出樸素貝葉斯,這是一種流行的機器學習分類器如上所述,貝葉斯定理基於可能與事件相關的因素的先驗知識來定義事件的概率。現在,基本上對於數據點xi,我們必須預測當前輸出Y所屬的類。假設輸出的總類數為'j'。
  • 貝葉斯定理的通俗理解
    樸素貝葉斯是一種基於貝葉斯定理的簡單概率分類器(分類又被稱為監督式學習,所謂監督式學習即從已知樣本數據中的特徵信息去推測可能出現的輸出以完成分類
  • 樸素貝葉斯:幫助AI產品經理「小步快跑,快速迭代」
    一、樸素貝葉斯登場貝葉斯分類是一類分類算法的總稱,這類算法均以「貝葉斯定理」為基礎,以「特徵條件獨立假設」為前提。而樸素貝葉斯分類是貝葉斯分類中最常見的一種分類方法,同時它也是最經典的機器學習算法之一。在很多場景下處理問題直接又高效,因此在很多領域有著廣泛的應用,如垃圾郵件過濾、文本分類與拼寫糾錯等。
  • 樸素貝葉斯實戰篇之新浪新聞分類
    這樣,我們的樸素貝葉斯分類器就改進完畢了。三、樸素貝葉斯之過濾垃圾郵件在上篇文章那個簡單的例子中,我們引入了字符串列表。使用樸素貝葉斯解決一些現實生活中的問題時,需要先從文本內容得到字符串列表,然後生成詞向量。下面這個例子中,我們將了解樸素貝葉斯的一個最著名的應用:電子郵件垃圾過濾。
  • 樸素貝葉斯分類器詳解及中文文本輿情分析(附代碼實踐)
    樸素貝葉斯數學原理知識該基礎知識部分引用文章"機器學習之樸素貝葉斯(NB)分類算法與Python實現"(https://blog.csdn.net/moxigandashu/article/details/71480251),也強烈推薦大家閱讀博主moxigandashu的文章,寫得很好。同時作者也結合概率論講解,提升下自己較差的數學。
  • 解讀實踐中最廣泛應用的分類模型:樸素貝葉斯算法
    貝葉斯模型在機器學習以及人工智慧中都有出現,cherry 分類器使用了樸素貝葉斯模型算法,經過簡單的優化,使用 1000 個訓練數據就能得到 97.5% 的準確率。雖然現在主流的框架都帶有樸素貝葉斯模型算法,大多數開發者只需要直接調用 api 就能使用。但是在實際業務中,面對不同的數據集,必須了解算法的原理,實現以及懂得對結果進行分析,才能達到高準確率。
  • 樸素貝葉斯算法及應用案例
    作者:陳千鶴 來源:人工智慧學習圈本篇主要介紹樸素貝葉斯算法及應用案例。以Tatinic數據集為例進行應用,同時介紹數據處理,數據集的劃分,算法效果評估等內容。一、簡介樸素貝葉斯法是基於貝葉斯定理與特徵條件獨立假設的分類方法 。
  • 「NLP」經典分類模型樸素貝葉斯解讀
    作者 | 小Dream哥編輯 | 言有三1 貝葉斯決策論貝葉斯決策論是在統計概率框架下進行分類決策的基本方法。對於分類任務來說,在所有相關概率都已知的情況下,貝葉斯決策論考慮如何基於這些概率和誤判損失來預測分類。假設在一個分類任務中,有N種可能的分類,y={c1,c2,c3,...,cN}。
  • 樸素貝葉斯詳解及中文輿情分析(附代碼實踐)
    樸素貝葉斯數學原理知識該基礎知識部分引用文章"機器學習之樸素貝葉斯(NB)分類算法與Python實現"(https://blog.csdn.net/moxigandashu/article/details/71480251),也強烈推薦大家閱讀博主moxigandashu的文章,寫得很好。同時作者也結合概率論講解,提升下自己較差的數學。
  • 極具震撼力的貝葉斯定理,作為數據科學人的您咋能錯過?
    概率是許多數據科學算法的核心 。貝葉斯定理是貝葉斯統計的一個主要方面,是由生活在18世紀的僧侶託馬斯·貝葉斯(Thomas Bayes)提出的。我們仍在學習貝葉斯統計的這一事實,表明他的作品在多個世紀以來都具有巨大的影響力!貝葉斯定理使我們能夠解決複雜的數據科學問題,並且仍然領先在世界領先的大學教授。在本文中,我們將詳細探討貝葉斯定理及其應用,包括樸素貝葉斯分類器和判別函數等。
  • 機器學習算法集錦:從貝葉斯到深度學習及各自優缺點
    )深度學習(Deep Learning)支持向量機(Support Vector Machine)降維算法(Dimensionality Reduction Algorithms)聚類算法(Clustering Algorithms)基於實例的算法(Instance-based Algorithms)貝葉斯算法(Bayesian Algorithms)關聯規則學習算法(Association Rule