貝葉斯分類器
原理:基於先驗概率P(Y),利用貝葉斯公式計算后驗概率P(Y/X)(該對象屬於某一類的概率),選擇具有最大后驗概率的類作為該對象所屬類
特點:數據可離散可連續;對數據缺失、噪音不敏感;若屬性相關性小,分類效果好,相關也不低於決策樹
朴素貝葉斯算法
學習的內容是先驗概率和條件概率(都使用極大似然估計這兩種概率),公式很難敲,不敲了
scikit-learn中根據條件概率不同的分布有多種貝葉斯分類器
高斯貝葉斯分類器(GaussianNB)【假設條件分布滿足高斯分布】
sklearn.naive_bayes.GaussianNB
-
無參數,不需要調參
-
方法
- fit()
- partial_fit():追加訓練模型,適用於規模大的數據集,划分為若干個小數據集,在這些小數據集上連續使用partial_fit訓練模型
- predict()
- score()
-
屬性
- class_prior_:每個類別的概率
- class_count_:每個類別包含樣本數量
多項式貝葉斯分類器(MultinomialNB)【。。。多項式分布】
sklearn.naive_bayes.MutlnomialNB
-
參數
- alpha:浮點數,指定朴素貝葉斯估計公式中λ值
- fit_prior=True:是否學習P(y=Ck),不學習則以均勻分布替代
- class_prior=None:可以傳入數組指定每個分類的先驗概率,None代表從數據集中學習先驗概率
- class_count:數組,形狀為(n_class,),每個類別包含訓練樣本數量
- feature_count:數組,形狀(n_class,n_features),每個類別每個特征遇到的樣本數
-
方法同上面高斯貝葉斯
伯努利貝葉斯分類器(BernoulliNB)【。。。二項分布】
- 適用於離散特征
- 特征取值只能是0和1(如文本分類中某個詞出現,特征為1;無,特征為0)
sklearn.naive_bayes.BernoulliNB
-
參數
- alpha:浮點數,指定貝葉斯估計中的λ
- binarize=0.0:浮點數或None,None表明原始數據已二元化;浮點數作為邊界,特征取值大於該邊界作為1,否則作為0(通過這個浮點數來實現二元化)
- fit_prior=True:是否學習P(y=Ck),不學習則以均勻分布替代
- class_prior=None:可以傳入數組指定每個分類的先驗概率,None代表從數據集中學習先驗概率
- class_count:數組,形狀為(n_class,),每個類別包含訓練樣本數量
- feature_count:數組,形狀(n_class,n_features),每個類別每個特征遇到的樣本數
-
方法同上
alpha對預測的影響,越大(>100)准確率反而下降
binarize不能過小不能太大,一般取所有特征的所有值的(Min+Max)/2