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