sklearn朴素贝叶斯分类器_朴素贝叶斯原理
貝葉斯分類算法是統(tǒng)計(jì)學(xué)是一種概率分類方法,樸素貝葉斯分類時(shí)貝葉斯分類中最簡單的一種。利用貝葉斯公式根據(jù)某特征的先驗(yàn)概率計(jì)算出其后延概率,然后選擇具有最大后延概率的類作為該特征所屬的類。樸素貝葉斯,稱之為“樸素”,是因?yàn)檎麄€(gè)形式化過程只做了最原始、最簡單的假設(shè),具體假設(shè)如下:
1. 概率相關(guān)
先驗(yàn)概率: 比如向女生表白成功的概率是20%,記為P(A)=20%
條件概率:在事件B發(fā)生的情況下,事件A發(fā)生的概率,用P(A|B)表示,具體計(jì)算公式如下。如帥的前提下,向女生表白成功的概率為50%,記為P(A|B)=50%。
同理可得:在事件A發(fā)生的情況下,事件B發(fā)生的概率,用P(B|A)表示,具體計(jì)算公式如下:
聯(lián)合概率:事件A和B同時(shí)發(fā)生的概率 。比如,長得帥且向女生表白成功的概率為1%,記為P(A∩B)=1%
條件概率和聯(lián)合概率之間的關(guān)系,可用下式表示:
所以就會有:
全概率: 如果事件A不是一個(gè)條件,而是一堆條件,這些條件互斥且能窮盡所有可能 。則對任意一個(gè)事件B則有
2. 貝葉斯準(zhǔn)則
如果已知P(B|A_i),要求P(A_i|B),應(yīng)用貝葉斯準(zhǔn)則得到:
要求解
,只需要知道 和 。因?yàn)閷τ谕粋€(gè)數(shù)據(jù)集,P(B)是一個(gè)常量,可以不參與計(jì)算。先驗(yàn)概率
的計(jì)算公式如下:其中,
表示數(shù)據(jù)集D中 類樣本組成的樣本數(shù),|D|表示數(shù)據(jù)集D的樣本數(shù)。如果B是多維屬性,那么可以假設(shè)
對應(yīng)的事件是彼此獨(dú)立的,這些值連乘在一起得到 ,具體計(jì)算公式如下:3. 使用條件概率來分類
如果給定某個(gè)由
屬性表示的數(shù)據(jù)點(diǎn),那么該數(shù)據(jù)點(diǎn)來自類別 的概率是多少?數(shù)據(jù)點(diǎn)來自類別 的概率有事多少?可以應(yīng)用貝葉斯準(zhǔn)則得到:使用這些定義,可以定義貝葉斯分類準(zhǔn)則:
- 如果 , 則屬于類別
- 如果 , 則屬于類別
使用貝葉斯準(zhǔn)測,可以通過已知的三個(gè)概率值來計(jì)算未知的概率值。
4. 嫁還是不嫁?
通過嫁還是不嫁這個(gè)二分類問題,來更加了解樸素貝葉斯。假設(shè)由顏值,性格,是否上進(jìn)這三個(gè)屬性來決定最終嫁還是不嫁。如果現(xiàn)在有一個(gè)男生是:帥 & 性格不好 & 不上進(jìn),預(yù)測女生嫁還是不嫁該男生呢?
? 數(shù)據(jù)集如下:
由于樸素貝葉斯公式如下:
換種更清楚的表達(dá)如下:
在這個(gè)例子中,就是要求
和 這兩個(gè)概率,選取概率大的來做決策。通過樸素貝葉斯公式:
在這兩個(gè)公式里,因?yàn)?P(帥,性格不好,不上進(jìn))都是一樣的,所以,想要獲取 P(嫁|帥,性格不好,不上進(jìn)) 和 P(不嫁|帥,性格不好,不上進(jìn)) 這兩個(gè)概率中的最大值,就等價(jià)于求P(帥,性格不好,不上進(jìn)|嫁)P(嫁)和P(帥,性格不好,不上進(jìn)|不嫁)P(不嫁)中的最大值。只需計(jì)算出P(帥,性格不好,不上進(jìn)|嫁)、P(帥,性格不好,不上進(jìn)|不嫁)、P(嫁)、P(不嫁)這四個(gè)概率,即可求出P(嫁|帥,性格不好,不上進(jìn))和P(不嫁|帥,性格不好,不上進(jìn))這個(gè)兩個(gè)概率中最大概率對應(yīng)的類別。
由于
則有
由于
所以, 根據(jù)樸素貝葉斯算法可以給這個(gè)女生答案,是不嫁
5. 樸素貝葉斯種類
在sklearn中,樸素貝葉斯種類有三種,分別是GaussianNB、MultinomialNB和BernoulliNB。
5.1 高斯樸素貝葉斯(GaussianNB)
GaussianNB是先驗(yàn)為高斯分布(正態(tài)分布)的樸素貝葉斯,假設(shè)每個(gè)標(biāo)簽的數(shù)據(jù)都服從高斯分布(正態(tài)分布)。正態(tài)分布的概率密度函數(shù)計(jì)算公式如下:
其中,
為Y的第k類類別。 和 為第k類樣本在第i個(gè)屬性上的取值的均值和方差。sklearn中的GaussianNB實(shí)現(xiàn)
下面采用sklearn中的鸞尾花數(shù)據(jù)集,由于數(shù)據(jù)集都是連續(xù)屬性,所以采用GaussianNB來進(jìn)行實(shí)現(xiàn),看下預(yù)測情況。
# 導(dǎo)入包運(yùn)行結(jié)果如下
測試集準(zhǔn)確率為: 0.9736842105263158可以看到,測試集準(zhǔn)確率97%,準(zhǔn)確率挺高。
5.2 多項(xiàng)式樸素貝葉斯(MultinomialNB)
多項(xiàng)式樸素貝葉斯是先驗(yàn)為多項(xiàng)式分布的樸素貝葉斯。 它假設(shè)特征是由一個(gè)簡單多項(xiàng)式分布生成的。多項(xiàng)分布可以描述各種類型樣本出現(xiàn)次數(shù)的概率,因此多項(xiàng)式樸素貝葉斯非常適合用于描述出現(xiàn)次數(shù)的特征。該模型常用于文本分類,特征表示的是次數(shù),例如某個(gè)詞語的出現(xiàn)次數(shù)。
多項(xiàng)式分布
多項(xiàng)式分布來源于統(tǒng)計(jì)學(xué)中的多項(xiàng)式實(shí)驗(yàn),這種實(shí)驗(yàn)可以解釋為:實(shí)驗(yàn)包括n次重復(fù)試驗(yàn),每次試驗(yàn)都有不同的可能結(jié)果。在任何給定的試驗(yàn)中,特定結(jié)果發(fā)生的概率是不變的。
多項(xiàng)式分布公式:
其中,
表示c類別下第i個(gè)屬性上取值為 的條件概率。 是c類別下第i個(gè)屬性上取值為 的樣本數(shù), 是c類的樣本數(shù)。 表示第i個(gè)屬性可能的取值數(shù)。λ被稱為平滑系數(shù),令λ>0來防止訓(xùn)練數(shù)據(jù)中出現(xiàn)過的一些詞匯沒有出現(xiàn)在測試集中導(dǎo)致的0概率。如果λ=1,則這個(gè)平滑叫做拉普拉斯平滑,λ<1,叫做利德斯通平滑。sklearn中的MultinomialNB實(shí)現(xiàn)
多項(xiàng)式所涉及的特征往往是次數(shù),頻率,計(jì)數(shù)這樣的概念,這些概念都是離散的正整數(shù),因此,sklearn中的MultinomialNB不接受負(fù)值的輸入。
MultinomialNB包含如下的參數(shù)和屬性:
class其中
- alpha : 浮點(diǎn)數(shù), 可不填 【默認(rèn)為1.0】
平滑系數(shù)λ,如果為0,則表示完全沒有平滑選項(xiàng)。需注意,平滑相當(dāng)于人為給概率加上一些噪音,因此λ設(shè)置得越大,精確性會越低(雖然影響不是非常大)
- fit_prior : 布爾值, 可不填【默認(rèn)為True】
是否學(xué)習(xí)先驗(yàn)概率P(Y=c)。如果為False,則所有的樣本類別輸出都有相同的類別先驗(yàn)概率。即認(rèn)為每個(gè)標(biāo)簽類出現(xiàn)的概率是1/總類別數(shù)
- class_prior:形似數(shù)組的結(jié)構(gòu),結(jié)構(gòu)為(n_classes,),可不填【默認(rèn)為None】 表示類的先驗(yàn)概率P(Y=c)。如果沒有給出具體的先驗(yàn)概率則自動(dòng)根據(jù)數(shù)據(jù)來進(jìn)行計(jì)算。
總結(jié)如下:
其中,k為總類別數(shù),m為訓(xùn)練集樣本總數(shù)量,
為輸出為第k個(gè)類別的訓(xùn)練集樣本數(shù)。實(shí)例
建一個(gè)簡單多項(xiàng)式樸素貝葉斯(讓所有的參數(shù)保持默認(rèn))的例子。
# 導(dǎo)?入需要的模塊和庫運(yùn)行結(jié)果如下:
5.3 伯努利樸素貝葉斯(BernoulliNB)
BernoulliNB就是先驗(yàn)為伯努利分布的樸素貝葉斯。假設(shè)特征的先驗(yàn)概率為二元伯努利分布,在文本分類中 ,就是一個(gè)特征有沒有在一個(gè)文檔中出現(xiàn)。
伯努利分布公式如下:
此時(shí),
只能取0和1。由于
,所以上式可變?yōu)?p> 是c類別下第i個(gè)屬性上取值為1的樣本數(shù), 是c類的樣本數(shù)。2表示第i個(gè)屬性可能的取值數(shù),這里只有0和1兩種取值,所以是2。sklearn中的BernoulliNB實(shí)現(xiàn)
類BernoulliNB包含如下的參數(shù)和屬性:
class其中
binarize:將數(shù)據(jù)特征二值化的閾值,大于binarize的值處理為1 ,小于等于binarize的值處理為0;
其他參數(shù)說明見5.2中多項(xiàng)式的參數(shù)說明;
實(shí)例
先來建一個(gè)簡單伯努利樸素貝葉斯的例子。
import打印相關(guān)屬性語句如下:
# class_log_prior_:類先驗(yàn)概率對數(shù)值運(yùn)行結(jié)果如下
小結(jié)
- 如果樣本特征的分布大部分是連續(xù)值(如人的身高,體重等),建議使用GaussianNB會比較好;
- 如果樣本特征的分布大部分是多元離散值(如在文檔分類中特征是單詞出現(xiàn)次數(shù)),建議使用MultinomialNB比較好;
- 如果樣本特征是二元離散值(如在文檔分類中特征是單詞是否出現(xiàn)) ,建議使用BernoulliNB比較好。
樸素貝葉斯算法優(yōu)缺點(diǎn)
優(yōu)點(diǎn): 在屬性相關(guān)性較小時(shí)效果較好,可以處理多類別問題;算法邏輯簡單,易于實(shí)現(xiàn) ;
缺點(diǎn): 在屬性個(gè)數(shù)比較多或者屬性之間相關(guān)性較大時(shí),分類效果不好;
總結(jié)
以上是生活随笔為你收集整理的sklearn朴素贝叶斯分类器_朴素贝叶斯原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 直接学python行不行_是否可以直接学
- 下一篇: 机器学习中为什么需要梯度下降_机器学习,