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用于分类特征的朴素贝叶斯分类器。
ComplementNBRennie 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_fitmethod.请注意,此方法仅在以下情况下相关:此估计器用作 元估计器 中的子估计器,并且通过
enable_metadata_routing=True启用了元数据路由(请参阅sklearn.set_config)。请查看 用户指南 以了解路由机制的工作原理。每个参数的选项如下:
True: metadata is requested, and passed topartial_fitif provided. The request is ignored if metadata is not provided.False: metadata is not requested and the meta-estimator will not pass it topartial_fit.None:不请求元数据,如果用户提供元数据,元估计器将引发错误。str:应将元数据以给定别名而不是原始名称传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。在版本 1.3 中新增。
- 参数:
- classesstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
用于
partial_fit中classes参数的元数据路由。- sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
sample_weightparameter inpartial_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
更新后的对象。