BernoulliNB#

class sklearn.naive_bayes.BernoulliNB(*, alpha=1.0, force_alpha=True, binarize=0.0, fit_prior=True, class_prior=None)[source]#

用于多元伯努利模型的朴素贝叶斯分类器。

与 MultinomialNB 类似,此分类器适用于离散数据。不同之处在于,MultinomialNB 处理出现次数计数,而 BernoulliNB 专为二元/布尔特征设计。

用户指南中了解更多信息。

参数:
alphafloat or array-like of shape (n_features,), default=1.0

加性(拉普拉斯/Lidstone)平滑参数(设置 alpha=0 和 force_alpha=True 表示不平滑)。

force_alphabool, default=True

如果为 False 且 alpha 小于 1e-10,则将其设置为 1e-10。如果为 True,alpha 将保持不变。如果 alpha 太接近 0,这可能会导致数值错误。

1.2 版本新增。

版本 1.4 中更改: force_alpha 的默认值更改为 True

binarizefloat or None, default=0.0

样本特征的二值化(映射为布尔值)阈值。如果为 None,则假定输入已由二元向量组成。

fit_priorbool, default=True

是否学习类别先验概率。如果为 false,则将使用均匀先验。

class_priorarray-like of shape (n_classes,), default=None

类别的先验概率。如果指定,则先验不根据数据进行调整。

属性:
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_in_int

拟合 期间看到的特征数。

0.24 版本新增。

feature_names_in_shape 为 (n_features_in_,) 的 ndarray

fit 期间看到的特征名称。仅当 X 具有全部为字符串的特征名称时才定义。

1.0 版本新增。

另请参阅

CategoricalNB

用于分类特征的朴素贝叶斯分类器。

ComplementNB

Rennie et al. (2003) 中描述的 Complement Naive Bayes 分类器。

GaussianNB

高斯朴素贝叶斯 (GaussianNB)。

MultinomialNB

用于多项式模型的朴素贝叶斯分类器。

References

C.D. Manning, P. Raghavan and H. Schuetze (2008). Introduction to Information Retrieval. Cambridge University Press, pp. 234-265. https://nlp.stanford.edu/IR-book/html/htmledition/the-bernoulli-model-1.html

A. McCallum and K. Nigam (1998). A comparison of event models for naive Bayes text classification. Proc. AAAI/ICML-98 Workshop on Learning for Text Categorization, pp. 41-48.

V. Metsis, I. Androutsopoulos and G. Paliouras (2006). Spam filtering with naive Bayes – Which naive Bayes? 3rd Conf. on Email and Anti-Spam (CEAS).

示例

>>> 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]
fit(X, y, sample_weight=None)[source]#

根据 X, y 拟合朴素贝叶斯分类器。

参数:
Xshape 为 (n_samples, n_features) 的 {array-like, sparse matrix}

训练向量,其中 n_samples 是样本数量,n_features 是特征数量。

yarray-like of shape (n_samples,)

目标值。

sample_weightshape 为 (n_samples,) 的 array-like, default=None

Weights applied to individual samples (1. for unweighted).

返回:
selfobject

返回实例本身。

get_metadata_routing()[source]#

获取此对象的元数据路由。

请查阅 用户指南,了解路由机制如何工作。

返回:
routingMetadataRequest

封装路由信息的 MetadataRequest

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deepbool, default=True

如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。

返回:
paramsdict

参数名称映射到其值。

partial_fit(X, y, classes=None, sample_weight=None)[source]#

在批量样本上进行增量拟合。

此方法旨在连续多次在数据集的不同块上调用,以实现核外或在线学习。

当整个数据集太大而无法一次性放入内存时,这特别有用。

此方法会产生一些性能开销,因此最好在尽可能大的数据块上调用 partial_fit(只要内存预算允许),以隐藏开销。

参数:
Xshape 为 (n_samples, n_features) 的 {array-like, sparse matrix}

训练向量,其中 n_samples 是样本数量,n_features 是特征数量。

yarray-like of shape (n_samples,)

目标值。

classesarray-like of shape (n_classes,), default=None

y 向量中可能出现的所有类别的列表。

必须在第一次调用 partial_fit 时提供,在后续调用中可以省略。

sample_weightshape 为 (n_samples,) 的 array-like, default=None

Weights applied to individual samples (1. for unweighted).

返回:
selfobject

返回实例本身。

predict(X)[source]#

对测试向量 X 数组执行分类。

参数:
Xshape 为 (n_samples, n_features) 的 array-like

输入样本。

返回:
Cndarray of shape (n_samples,)

X 的预测目标值。

predict_joint_log_proba(X)[source]#

返回测试向量 X 的联合对数概率估计。

对于 X 的每一行 x 和类别 y,联合对数概率由 log P(x, y) = log P(y) + log P(x|y), 给出,其中 log P(y) 是类别先验概率,log P(x|y) 是类别条件概率。

参数:
Xshape 为 (n_samples, n_features) 的 array-like

输入样本。

返回:
Cndarray of shape (n_samples, n_classes)

返回模型中每个类别的样本的联合对数概率。列对应于按排序顺序排列的类别,如属性 classes_ 中所示。

predict_log_proba(X)[source]#

返回测试向量 X 的对数概率估计。

参数:
Xshape 为 (n_samples, n_features) 的 array-like

输入样本。

返回:
Carray-like of shape (n_samples, n_classes)

返回模型中每个类别的样本的对数概率。列对应于按排序顺序排列的类别,如属性 classes_ 中所示。

predict_proba(X)[source]#

返回测试向量 X 的概率估计值。

参数:
Xshape 为 (n_samples, n_features) 的 array-like

输入样本。

返回:
Carray-like of shape (n_samples, n_classes)

返回每个样本在模型中每个类别的概率。列对应于按排序顺序排列的类别,与其在属性 classes_ 中出现的顺序一致。

score(X, y, sample_weight=None)[source]#

返回在提供的数据和标签上的 准确率 (accuracy)

在多标签分类中,这是子集准确率 (subset accuracy),这是一个严格的指标,因为它要求每个样本的每个标签集都被正确预测。

参数:
Xshape 为 (n_samples, n_features) 的 array-like

测试样本。

yshape 为 (n_samples,) 或 (n_samples, n_outputs) 的 array-like

X 的真实标签。

sample_weightshape 为 (n_samples,) 的 array-like, default=None

样本权重。

返回:
scorefloat

self.predict(X) 相对于 y 的平均准确率。

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') BernoulliNB[source]#

配置是否应请求元数据以传递给 fit 方法。

请注意,此方法仅在以下情况下相关:此估计器用作 元估计器 中的子估计器,并且通过 enable_metadata_routing=True 启用了元数据路由(请参阅 sklearn.set_config)。请查看 用户指南 以了解路由机制的工作原理。

每个参数的选项如下:

  • True:请求元数据,如果提供则传递给 fit。如果未提供元数据,则忽略该请求。

  • False:不请求元数据,元估计器不会将其传递给 fit

  • None:不请求元数据,如果用户提供元数据,元估计器将引发错误。

  • str:应将元数据以给定别名而不是原始名称传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

在版本 1.3 中新增。

参数:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

fit 方法中 sample_weight 参数的元数据路由。

返回:
selfobject

更新后的对象。

set_params(**params)[source]#

设置此估计器的参数。

此方法适用于简单的估计器以及嵌套对象(如 Pipeline)。后者具有 <component>__<parameter> 形式的参数,以便可以更新嵌套对象的每个组件。

参数:
**paramsdict

估计器参数。

返回:
selfestimator instance

估计器实例。

set_partial_fit_request(*, classes: bool | None | str = '$UNCHANGED$', sample_weight: bool | None | str = '$UNCHANGED$') BernoulliNB[source]#

Configure whether metadata should be requested to be passed to the partial_fit method.

请注意,此方法仅在以下情况下相关:此估计器用作 元估计器 中的子估计器,并且通过 enable_metadata_routing=True 启用了元数据路由(请参阅 sklearn.set_config)。请查看 用户指南 以了解路由机制的工作原理。

每个参数的选项如下:

  • True: metadata is requested, and passed to partial_fit if provided. The request is ignored if metadata is not provided.

  • False: metadata is not requested and the meta-estimator will not pass it to partial_fit.

  • None:不请求元数据,如果用户提供元数据,元估计器将引发错误。

  • str:应将元数据以给定别名而不是原始名称传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

在版本 1.3 中新增。

参数:
classesstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

用于 partial_fitclasses 参数的元数据路由。

sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for sample_weight parameter in partial_fit.

返回:
selfobject

更新后的对象。

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') BernoulliNB[source]#

配置是否应请求元数据以传递给 score 方法。

请注意,此方法仅在以下情况下相关:此估计器用作 元估计器 中的子估计器,并且通过 enable_metadata_routing=True 启用了元数据路由(请参阅 sklearn.set_config)。请查看 用户指南 以了解路由机制的工作原理。

每个参数的选项如下:

  • True:请求元数据,如果提供则传递给 score。如果未提供元数据,则忽略该请求。

  • False:不请求元数据,元估计器不会将其传递给 score

  • None:不请求元数据,如果用户提供元数据,元估计器将引发错误。

  • str:应将元数据以给定别名而不是原始名称传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

在版本 1.3 中新增。

参数:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

score 方法中 sample_weight 参数的元数据路由。

返回:
selfobject

更新后的对象。