1. 程式人生 > >機器學習——python scikit-learn 貝葉斯

機器學習——python scikit-learn 貝葉斯

scikit-learn 中實現了樸素貝葉斯的方法來源於sklearn.naive_bayes模組,在這個模組下,基於P(x_{_{i}}|y)的計算方法不同,存在三種實現模組:Gaussian Naive Bayes、Multinomial Naive Bayes、Bernoulli Naive Bayes.

1.Bernoulli Naive Bayes

函式說明:https://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.BernoulliNB.html

此方法主要是針對資料符合多元伯努利分佈的樸素貝葉斯分類演算法。例如,可能會有多個特徵,但每一個被假定為一個二進位制值(伯努利、布林)變數,因此,這類要求的樣品被表示為二進位制值的特徵向量;如果交給其他任何型別的資料,一個bernoullinb例項可以進行輸入(取決於二值化引數)

伯努利樸素貝葉斯決策規則的基礎上

P(x_{i}|y)=P(i|y)x{_{i}}+(1-p(i|y)))(1-x{_{i}})

在文字分類中,詞出現的頻次(不是詞數量)可以使用該分類器。bernoullinb對某些資料集執行效果比較好,尤其是那些短的檔案。如果時間允許的話,建議對兩種模型進行評估。

呼叫方法:

sklearn.naive_bayes.BernoulliNB(alpha=1.0, binarize=0.0, fit_prior=True, class_prior=None)

例子:

import numpy as np
X = np.random.randint(2, size=(6, 100))
Y = np.array([1, 2, 3, 4, 4, 5])
from sklearn.naive_bayes import BernoulliNB
clf = BernoulliNB()
clf.fit(X, Y)
BernoulliNB(alpha=1.0, binarize=0.0, class_prior=None, fit_prior=True)
print(clf.predict(X[2:3]))

2.Gaussian Naive Bayes

scikit-learn中高斯貝葉斯應用於分類,特徵滿足高斯分佈:

P(x_{i}|y)=\frac{1}{\sqrt{2\pi \delta _{y}^{2}}}exp(-\frac{(x_{i}-\mu _{y})^{2}}{2\delta _{y}^{2}})

函式說明:https://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.GaussianNB.html#sklearn.naive_bayes.GaussianNB

呼叫方法:

sklearn.naive_bayes.GaussianNB(priors=None, var_smoothing=1e-09)

例子:

 

3.Multinomial Naive Bayes

適用於資料滿足multinomially的分佈的樸素貝葉斯,經典應用於文字分類(其中的資料是通常表示為詞的數量,雖然TF-IDF向量在實際專案中表現得更好),每一類y的分佈為\theta _{y}=(\theta _{y1},.......,\theta _{yn})

,n是特徵的數目(在文字分類中,表示詞彙量的長度),\theta _{yi}表示特徵i屬於類別y的概率P(x_{i}|y)

函式說明:https://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.ComplementNB.html#sklearn.naive_bayes.ComplementNB

呼叫方法:

sklearn.naive_bayes.ComplementNB(alpha=1.0, fit_prior=True, class_prior=None, norm=False)