sklearn.naive_bayes

  • 如果没有很多数据,贝叶斯模型会比很多复杂的模型获得更好的性能,因为复杂的模型用了太多假设,易产生欠拟合。

  • 在scikit-learn中,常用的3种朴素贝叶斯分类算法:GaussianNB(高斯朴素贝叶斯)、MultinomialNB(多项式朴素贝叶斯)、BernoulliNB(伯努利朴素贝叶斯)

这三个类适用的分类场景各不相同,一般来说

  • 如果样本特征的分布大部分是连续值,使用GaussianNB会比较好。
  • 如果样本特征的分布大部分是多元离散值,使用MultinomialNB比较合适。如文本分类单词统计,以出现的次数作为特征值
  • 如果样本特征是二元离散值或者很稀疏的多元离散值,应该使用BernoulliNB。

高斯朴素贝叶斯:sklearn.naive_bayes.GaussianNB(priors=None)

GaussianNB假设特征的先验概率为正态分布:
P ( X j = x j ∣ Y = C k ) = 1 2 π σ k 2 e x p ( − ( x j − μ k ) 2 2 σ k 2 ) P(X_j=x_j|Y=C_k) = \frac{1}{\sqrt{2\pi\sigma_k^2}}exp{(}-\frac{(x_j - \mu_k)^2}{2\sigma_k^2}{)} P(Xj=xjY=Ck)=2πσk2 1exp(2σk2(xjμk)2)
其中 C k C_k Ck为Y的第k类类别,GaussianNB会根据训练集求出 μ k μ_k μk σ k 2 σ^2_k σk2

  • priors:默认None,对应Y的各个类别的先验概率 P ( Y = C k ) = m k / m P(Y=C_k)=m_k/m P(Y=Ck)=mk/m,其中m为训练集样本总数量, m k m_k mk为输出为第k类别的训练集样本数。若给出以priors 为准。

clf属性:

  • fit(X, y, sample_weight=None):训练样本,sample_weight表示各样本权重数组
  • partial_fit(X, y, classes=None, sample_weight=None):增量式训练,当训练数据集数据量非常大,不能一次性全部载入内存时,可以将数据集划分若干份,重复调用partial_fit在线学习模型参数,在第一次调用partial_fit函数时,必须制定classes参数,在随后的调用可以忽略。
  • class_count_属性:获取各类标记对应的训练样本数
  • theta_属性:获取各个类标记在各个特征上的均值
  • sigma_属性:获取各个类标记在各个特征上的方差
  • score(X, y, sample_weight=None):返回测试样本准确率
  • predict直接给出测试集的预测类别输出。
  • predict_proba给出测试集样本在各个类别上预测的概率。
  • predict_log_proba给出测试集样本在各个类别上预测的概率的一个对数转化。

多项式朴素贝叶斯:sklearn.naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)

MultinomialNB假设特征的先验概率为多项式分布:
P ( X j = x j l ∣ Y = C k ) = m k j l + λ m k + O j λ P(X_j=x_{jl}|Y=C_k) = \frac{m_{kjl} + \lambda}{m_k + O_j\lambda} P(Xj=xjlY=Ck)=mk+Ojλmkjl+λ
m k m_k mk是训练集中输出为第k类的样本个数。λ 为一个大于0的常数,即拉普拉斯平滑。

  • alpha:默认1.0,拉普拉斯平滑系数,如果发现拟合的不好,可以选择稍大于1或者稍小于1的数
  • fit_prior:默认True,是否学习先验概率,参数为False表示所有类标记具有相同的先验概率(1/k)
  • class_prior:默认None,此时的先验概率为 m k / m m_k/m mk/m,也可以自己输入先验概率

clf属性:

  • class_log_prior_ / intercept_:各类的平滑先验概率对数值
  • feature_log_prob_ / coef_:各类各特征概率(条件概率)对数值,(n_classes, n_features)数组

伯努利朴素贝叶斯:sklearn.naive_bayes.BernoulliNB(alpha=1.0, binarize=0.0,
fit_prior=True,class_prior=None)

BernoulliNB假设特征的先验概率为二元伯努利分布:
P ( X j = x j l ∣ Y = C k ) = P ( j ∣ Y = C k ) x j l + ( 1 − P ( j ∣ Y = C k ) ) ( 1 − x j l ) P(X_j=x_{jl}|Y=C_k) = P(j|Y=C_k)x_{jl} + (1 - P(j|Y=C_k))(1-x_{jl}) P(Xj=xjlY=Ck)=P(jY=Ck)xjl+(1P(jY=Ck))(1xjl) x j l x_{jl} xjl只能取值0或者1。

  • binarize:将数据特征二值化的阈值,如果不输入,则BernoulliNB认为每个数据特征都已经是二元的。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值