在scikit-learn中,一共有3個(gè)樸素貝葉斯的分類算法類。分別是:
GaussianNB 先驗(yàn)為高斯分布的樸素貝葉斯
MultinomialNB 先驗(yàn)為多項(xiàng)式分布的樸素貝葉斯
BernoulliNB 先驗(yàn)為伯努利分布的樸素貝葉斯
一般來(lái)說,如果樣本特征的分布大部分是連續(xù)值,使用GaussianNB會(huì)比較好。如果如果樣本特征的分大部分是多元離散值,使用MultinomialNB比較合適。而如果樣本特征是二元離散值或者很稀疏的多元離散值,應(yīng)該使用BernoulliNB。
GaussianNB
GaussianNB假設(shè)特征的先驗(yàn)概率為正態(tài)分布,即如下式:
其中為Y的第k類類別。
為在樣本類別
中,所有
的平均值。
為在樣本類別
中,所有
的方差。
GaussianNB類的主要參數(shù)僅有一個(gè),即先驗(yàn)概率priors ,對(duì)應(yīng)Y的各個(gè)類別的先驗(yàn)概率。這個(gè)值默認(rèn)不給出,如果不給出此時(shí)
。其中m為訓(xùn)練集樣本總數(shù)量,
為輸出為第k類別的訓(xùn)練集樣本數(shù)。
在使用GaussianNB的fit方法擬合數(shù)據(jù)后,我們可以進(jìn)行預(yù)測(cè)。此時(shí)預(yù)測(cè)有三種方法:
predict方法就是我們最常用的預(yù)測(cè)方法,直接給出測(cè)試集的預(yù)測(cè)類別輸出。
predict_proba會(huì)給出測(cè)試集樣本在各個(gè)類別上預(yù)測(cè)的概率。
predict_log_proba會(huì)給出測(cè)試集樣本在各個(gè)類別上預(yù)測(cè)的概率的一個(gè)對(duì)數(shù)轉(zhuǎn)化。
MultinomialNB
MultinomialNB假設(shè)特征的先驗(yàn)概率為多項(xiàng)式分布,即如下式:
其中,是第k個(gè)類別的第j維特征的第l個(gè)個(gè)取值條件概率。
是訓(xùn)練集中輸出為第k類的樣本個(gè)數(shù)。
為一個(gè)大于0的常數(shù),常常取為1,即拉普拉斯平滑。也可以取其他值。
MultinomialNB參數(shù)有3個(gè)。
參數(shù)alpha即為上面的常數(shù),默認(rèn)為1。
布爾參數(shù)fit_prior表示是否要考慮先驗(yàn)概率,如果是false,則所有的樣本類別輸出都有相同的類別先驗(yàn)概率。否則可以自己用第三個(gè)參數(shù)class_prior輸入先驗(yàn)概率,或者不輸入第三個(gè)參數(shù)class_prior讓MultinomialNB自己從訓(xùn)練集樣本來(lái)計(jì)算先驗(yàn)概率,此時(shí)的先驗(yàn)概率為。其中m為訓(xùn)練集樣本總數(shù)量,
為輸出為第k類別的訓(xùn)練集樣本數(shù)。
| fit_prior | class_prior | 最終先驗(yàn)概率 |
|---|---|---|
| false | 填或者不填沒有意義 | |
| true | 不填 | |
| true | 填 |
|
BernoulliNB
BernoulliNB假設(shè)特征的先驗(yàn)概率為二元伯努利分布(伯努利分布,又名兩點(diǎn)分布或者0-1分布,是一個(gè)離散型概率分布),即如下式:
此時(shí)只有兩種取值。
只能取值0或者1。
BernoulliNB一共有4個(gè)參數(shù),其中3個(gè)參數(shù)的名字和意義和MultinomialNB完全相同。唯一增加的一個(gè)參數(shù)是binarize,這個(gè)參數(shù)主要是用來(lái)幫BernoulliNB處理二項(xiàng)分布的,小于binarize的會(huì)歸為一類,大于binarize的會(huì)歸為另外一類。如果不輸入,則BernoulliNB認(rèn)為每個(gè)數(shù)據(jù)特征都已經(jīng)是二元的。