scikit-learn樸素貝葉斯類庫使用經驗分享

本文重點講述scikit-learn樸素貝葉斯類庫的使用要點和參數選擇。
1.scikit-learn 樸素貝葉斯類庫
樸素貝葉斯是一類比較簡單的算法,scikit-learn中樸素貝葉斯類庫的使用也比較簡單。相對於決策樹,KNN之類的算法,樸素貝葉斯需要關注的參數是比較少的,這樣也比較容易掌握。在scikit-learn中,一共有3個樸素貝葉斯的分類算法類。分別是GaussianNB,MultinomialNB和BernoulliNB。其中GaussianNB就是先驗爲高斯分佈的樸素貝葉斯,MultinomialNB就是先驗爲多項式分佈的樸素貝葉斯,而BernoulliNB就是先驗爲伯努利分佈的樸素貝葉斯。這三個類適用的分類場景各不相同,一般來說,如果樣本特徵的分佈大部分是連續值,使用GaussianNB會比較好。如果樣本特徵的分佈大部分是多元離散值,使用MultinomialNB比較合適。而如果樣本特徵是二元離散值或者很稀疏的多元離散值,應該使用BernoulliNB。

2.GaussianNB
GaussianNB假設特徵的先驗概率爲正態分佈,即如下式:
在這裏插入圖片描述其中Ck爲Y的第k類類別。μk和σ2k爲需要從訓練集估計的值。
GaussianNB會根據訓練集求出μk和σ2k。μk爲在樣本類別Ck中,所有Xj的平均值。σ2k爲在樣本類別Ck中,所有Xj的方差。
GaussianNB類的主要參數僅有一個,即先驗概率priors ,對應Y的各個類別的先驗概率P(Y=Ck)。這個值默認不給出,如果不給出此時P(Y=Ck)=mk/m。其中m爲訓練集樣本總數量,mk爲輸出爲第k類別的訓練集樣本數。如果給出的話就以priors 爲準。
在使用GaussianNB的fit方法擬合數據後,我們可以進行預測。此時預測有三種方法,包括predict,predict_log_proba和predict_proba。
predict方法就是我們最常用的預測方法,直接給出測試集的預測類別輸出。
predict_proba則不同,它會給出測試集樣本在各個類別上預測的概率。容易理解,predict_proba預測出的各個類別概率裏的最大值對應的類別,也就是predict方法得到類別。
predict_log_proba和predict_proba類似,它會給出測試集樣本在各個類別上預測的概率的一個對數轉化。轉化後predict_log_proba預測出的各個類別對數概率裏的最大值對應的類別,也就是predict方法得到類別。
此外,GaussianNB一個重要的功能是有 partial_fit方法,這個方法的一般用在如果訓練集數據量非常大,一次不能全部載入內存的時候。這時我們可以把訓練集分成若干等份,重複調用partial_fit來一步步的學習訓練集,非常方便。後面介紹的MultinomialNB和BernoulliNB也有類似的功能。

3.MultinomialNB
MultinomialNB假設特徵的先驗概率爲多項式分佈,即如下式:
在這裏插入圖片描述其中,P(Xj=xjl|Y=Ck)是第k個類別的第j維特徵的第l個取值條件概率。mk是訓練集中輸出爲第k類的樣本個數。λ 爲一個大於0的常數,常常取爲1,即拉普拉斯平滑。也可以取其他值。
MultinomialNB的參數比GaussianNB多,但是一共也僅僅只有3個。其中,參數alpha即爲上面的常數λ,如果你沒有特別的需要,用默認的1即可。如果發現擬合的不好,需要調優時,可以選擇稍大於1或者稍小於1的數。布爾參數fit_prior表示是否要考慮先驗概率,如果是false,則所有的樣本類別輸出都有相同的類別先驗概率。否則可以自己用第三個參數class_prior輸入先驗概率,或者不輸入第三個參數class_prior讓MultinomialNB自己從訓練集樣本來計算先驗概率,此時的先驗概率爲P(Y=Ck)=mk/m。其中m爲訓練集樣本總數量,mk爲輸出爲第k類別的訓練集樣本數。總結如下:
在這裏插入圖片描述在使用MultinomialNB的fit方法或者partial_fit方法擬合數據後,我們可以進行預測。此時預測有三種方法,包括predict,predict_log_proba和predict_proba。由於方法和GaussianNB完全一樣,這裏就不累述了。

4.BernoulliNB
BernoulliNB假設特徵的先驗概率爲二元伯努利分佈,即如下式:
在這裏插入圖片描述此時l只有兩種取值。xjl只能取值0或者1。
BernoulliNB一共有4個參數,其中3個參數的名字和意義與MultinomialNB完全相同。唯一增加的一個參數是binarize。這個參數主要是用來幫助BernoulliNB處理二項分佈,可以是數值或者不輸入。如果不輸入,則BernoulliNB認爲每個數據特徵都已經是二元的。否則的話,小於binarize的會歸爲一類,大於binarize的會歸爲另外一類。
在使用BernoulliNB的fit或者partial_fit方法擬合數據後,我們可以進行預測。此時預測有三種方法,包括predict,predict_log_proba和predict_proba。由於方法和GaussianNB完全一樣,這裏就不累述了。

以上就是scikit-learn樸素貝葉斯類庫的使用經驗總結。希望可以幫到各位小夥伴們。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章