4.1 API : MultinomialNB、GaussianNB、BernoulliNB

文章目录

      • 1.MultinomialNB
        • 实例
      • 2.GaussianNB
        • 实例
      • 3.BernoulliNB
        • 实例

1.MultinomialNB

假设特征的先验概率为多项式分布,多项式朴素贝叶斯分类器适用于具有离散特征的分类(例如,用于文本分类的字数统计)。多项式分布通常需要整数特征计数

from sklearn.naive_bayes import MultinomialNB

MultinomialNB(*, alpha=1.0, fit_prior=True, class_prior=None)

Parameters

alpha : float, default=1.0
贝叶斯估计所添加的参数,alpha=1.0时,为拉普拉斯平滑

fit_prior : bool, default=True
表示是否要学习先验概率,如果为False,则所有样本输出时使用统一的类别先验概率(1 / 类别数)。
如果为True时,则可以利用第三个参数class_piror输入先验概率,或者不输入第三个参数,可以从训练集中自己计算先验概率,此时,第k个类别的先验概率=第k个类别样本数 / 总的样本数

class_prior : array-like of shape (n_classes,), default=None
该类的先验概率。
如果指定了先验,则不会根据数据进行调整。

Attributes

class_count_ : ndarray of shape (n_classes,)
拟合期间每个类别遇到的样本数

class_log_prior_ :ndarray of shape (n_classes, )
每个类的平滑经验对数概率

classes_ : ndarray of shape (n_classes,)
分类器已知的类标签

feature_count_ : ndarray of shape (n_classes, n_features)
拟合期间每个(类,特征)遇到的样本数。

feature_log_prob_ : ndarray of shape (n_classes, n_features)
给定一类特征的经验对数概率,P(x_i|y)

n_features_ : int
每个样本的特征数

Methods

fit(X, y[, sample_weight])
根据X,y拟合朴素贝叶斯分类器

get_params([deep])
获得这个估计器的参数

partial_fit(X, y[, classes, sample_weight])
根据一批样本在线更新参数

predict(X)
对测试向量X进行分类。

predict_log_proba(X)
返回测试向量X的对数概率估计

predict_proba(X)
返回测试向量X的概率估计

score(X, y[, sample_weight])
返回给定测试数据和标签上的准确率

set_params(**params)
设置此估算器的参数。

实例

>>> import numpy as np
>>> rng = np.random.RandomState(1)
>>> X = rng.randint(5, size=(6, 100))
>>> y = np.array([1, 2, 3, 4, 5, 6])
>>> from sklearn.naive_bayes import MultinomialNB
>>> clf = MultinomialNB()
>>> clf.fit(X, y)
MultinomialNB()
>>> print(clf.predict(X[2:3]))
[3]

2.GaussianNB

假设先验概率为高斯分布,GaussianNB为高斯朴素贝叶斯,可以通过partial_fit在线更新模型参数。

from sklearn.naive_bayes import GaussianNB

GaussianNB(*, priors=None, var_smoothing=1e-09)

Parameters

priors : array-like of shape (n_classes,)
该类的先验概率。如果指定,则先验数据不会根据数据进行调整

var_smoothing : float, default=1e-9
所有特征的最大方差部分,已添加到方差中以提高计算稳定性。

Attributes

class_count_ : ndarray of shape (n_classes,)
每个类中观察到的训练样本数

class_prior_ : ndarray of shape (n_classes,)
每类的概率

classes_ : ndarray of shape (n_classes,)
分类器已知的类标签

epsilon_ : float
方差绝对相加值

sigma_ : ndarray of shape (n_classes, n_features)
每个类的每个特征的方差

theta_ : ndarray of shape (n_classes, n_features)
每个类的每个特征的均值

Methods
同上

实例

>>> import numpy as np
>>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
>>> Y = np.array([1, 1, 1, 2, 2, 2])
>>> from sklearn.naive_bayes import GaussianNB
>>> clf = GaussianNB()
>>> clf.fit(X, Y)
GaussianNB()
>>> print(clf.predict([[-0.8, -1]]))
[1]
>>> clf_pf = GaussianNB()
>>> clf_pf.partial_fit(X, Y, np.unique(Y))
GaussianNB()
>>> print(clf_pf.predict([[-0.8, -1]]))
[1]

3.BernoulliNB

先验为伯努利分布的朴素贝叶斯;像MultinomialNB一样,此分类器适用于离散数据。区别在于,虽然MultinomialNB可以处理出现次数,但BernoulliNB是为二进制/布尔功能而设计的。

from sklearn.naive_bayes import BernoulliNB

BernoulliNB(*, alpha=1.0, binarize=0.0, fit_prior=True, class_prior=None)

Parameters

alpha : float, default=1.0
贝叶斯估计所添加的参数,alpha=1.0时,为拉普拉斯平滑

binarize : float or None, default=0.0
用于将样本特征二值化(映射为布尔值)的阈值。如果为None,则假定输入已经由二进制向量组成

fit_prior : bool, default=True
表示是否要学习先验概率,如果为False,则所有样本输出时使用统一的类别先验概率(1 / 类别数)。
如果为True时,则可以利用第三个参数class_piror输入先验概率,或者不输入第三个参数,可以从训练集中自己计算先验概率,

class_prior : array-like of shape (n_classes,), default=None
该类的先验概率。
如果指定了先验,则不会根据数据进行调整。

Attributes
其余与MultinomialNB一样

coef_ : ndarray of shape (n_classes, n_features)
镜像feature_log_prob_将伯努利解释为线性模型

intercept_ : ndarray of shape (n_classes,)
镜像class_log_prior_将伯努利解释为线性模型

Methods
同上

实例

>>> import numpy as np
>>> rng = np.random.RandomState(1)
>>> X = rng.randint(5, size=(6, 100))
>>> Y = np.array([1, 2, 3, 4, 4, 5])
>>> from sklearn.naive_bayes import BernoulliNB
>>> clf = BernoulliNB()
>>> clf.fit(X, Y)
BernoulliNB()
>>> print(clf.predict(X[2:3]))
[3]

如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论留言!
在这里插入图片描述


你可能感兴趣的:(#,机器学习理论与实战,MultinomialNB,GaussianNB,BernoulliNB)