1. 程式人生 > >sklearn之貝葉斯分類器使用

sklearn之貝葉斯分類器使用

貝葉斯分類器

原理:基於先驗概率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