原理
关于贝叶斯算法的原理,推荐查看朴素贝叶斯算法原理小结,里面讲的非常详细,这里摘录原理小结。
优点
- 分类效率稳定。
- 对缺少数据不太敏感,常用于文本分类。
- 对小规模数据表现很好,对大规模数据可分批增量式训练。
- 能处理多分类任务。
缺点
- 特征较多或特征相关性较大时,分类效果不好。
- 对数据的表达形式很敏感。
- 需要知道先验概率(常取决于假设),因此存在一定误差。
sklearn.naive_bayes
中有以下朴素贝叶斯分类算法:
- 高斯朴素贝叶斯 GaussianNB
- 多项式朴素贝叶斯 MultinomialNB
- 伯努利朴素贝叶斯 BernoulliNB
- 补充朴素贝叶斯 ComplementNB
适用场景
-
GaussianNB
适用样本特征分布大部分是连续值 -
MultinomialNB
适用样本特征分布大部分是多元离散值 -
BernoulliNB
适用样本特征是二元离散值或很稀疏的多元离散值 -
ComplementNB
适用样本特征分布不平衡(或随机)
二元离散值:只有两种取值的离散值
多元离散值:两种以上取值的离散值。
实例化参数说明
GaussianNB(priors=None)
-
priors
各分类的先验概率。默认Pk=Ck/C(Ck为第k类别的个数,C为样本总个数)
MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)
-
alpha
加法平滑(默认1.0),0表示不处理。解释:贝叶斯公式推导能够成立有个重要前期,就是各个证据(evidence)不能为0。而实际上某些特征未出现在测试集中的情况是可能发生的,因此实现上通常要做一些小的处理,例如把所有计数进行+1。 -
fit_prior
是否考虑先验概率。 -
class_prior
指定各分类的先验概率fit_prior 与 class_prior对先验概率Pk的影响如下:
fit_prior class_prior Pk false 忽略 都为1/k true None Ck/C true Array class_prior
BernoulliNB(alpha=1.0, binarize=0.0, fit_prior=True, class_prior=None)
-
binarize
帮BernoulliNB处理二项分布。若设置该值,则不大于该值为一类,大于该值为另一类。
ComplementNB(alpha=1.0, fit_prior=True, class_prior=None, norm=False)
-
norm
是否执行两次权重正常化。默认行为与Mahout和Weka相似。
常用方法
-
fit(X, y)
训练模型 -
partial_fit(X, y)
增量式训练。大量数据可分若干份,重复调用该方法训练。 -
product(X)
直接给出测试样本分类预测的结果 -
product_proba(X)
给出测试样本属于各分类的概率 -
product_log_proba(X)
给出测试样本属于各分类的概率的对数 -
score(X,y)
返回测试样本映射到指定类标记上的得分(准确率)
例子参考 sklearn朴素贝叶斯类库使用小结
常见模型指标
- class_prior_ 各个类标记对应的先验概率
- class_count_ 各类标记对应的训练样本数
- theta_ 各类标记在各个特征上的均值
- sigma_ 各个类标记在各个特征上的方差
例子参考 sklearn朴素贝叶斯类库使用小结
网友评论