Scikit Learn 简明教程

Scikit Learn - Classification with Naïve Bayes

朴素贝叶斯方法是一组基于应用贝叶斯定理的监督学习算法,其有一个强假设,即所有预测变量彼此独立,即一个类别中的特征的存在与同一类别中任何其他特征的存在无关。这是一个朴素的假设,这就是为什么这些方法被称为朴素贝叶斯方法。

贝叶斯定理陈述了以下关系,以找到类的后验概率,即标签和某些观察到的特征的概率,$P\left(\begin{array}{c} Y\arrowvert features\end{array}\right)$。

此处,$P\left(\begin{array}{c} Y\arrowvert features\end{array}\right)$ 是类的后验概率。

$P\left(\begin{array}{c} Y\end{array}\right)$ 是类的先验概率。

$P\left(\begin{array}{c} features\arrowvert Y\end{array}\right)$ 是给定类的预测变量的概率即似然度。

$P\left(\begin{array}{c} features\end{array}\right)$ 是预测变量的先验概率。

Scikit-learn 提供了不同的朴素贝叶斯分类器模型,即高斯、多项式、补集和伯努利。所有这些模型主要根据它们对 𝑷$P\left(\begin{array}{c} features\arrowvert Y\end{array}\right)$,即给定类的预测变量的概率的分布的假设而有所不同。

Sr.No

Model & Description

1

Gaussian Naïve Bayes 高斯朴素贝叶斯分类器假设每个标签的数据都来自一个简单的正态分布。

2

Multinomial Naïve Bayes 它假设特征是从一个简单多项式分布中抽取的。

3

Bernoulli Naïve Bayes 此模型中的假设是特征本质上是二进制(0 和 1)。伯努利朴素贝叶斯分类的一种应用是使用“词袋”模型进行文本分类

4

Complement Naïve Bayes 它旨在纠正多项式贝叶斯分类器做出的严格假设。这种 NB 分类器适用于不平衡数据集

Building Naïve Bayes Classifier

我们还可以在 Scikit-learn 数据集上应用朴素贝叶斯分类器。在下面的示例中,我们应用 GaussianNB 并拟合 Scikit-leran 的 breast_cancer 数据集。

Example

Import Sklearn
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
data = load_breast_cancer()
label_names = data['target_names']
labels = data['target']
feature_names = data['feature_names']
features = data['data']
   print(label_names)
   print(labels[0])
   print(feature_names[0])
   print(features[0])
train, test, train_labels, test_labels = train_test_split(
   features,labels,test_size = 0.40, random_state = 42
)
from sklearn.naive_bayes import GaussianNB
GNBclf = GaussianNB()
model = GNBclf.fit(train, train_labels)
preds = GNBclf.predict(test)
print(preds)

Output

[
   1 0 0 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1
   1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1
   1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 1 1 1 1 1 1 0
   1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 0
   1 1 0 1 1 0 0 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1
   0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1
   1 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 0
   1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 0 1
   1 1 1 1 0 1 0 0 1 1 0 1
]

以上输出包含一系列 0 和 1,这些基本上是来自肿瘤类别(恶性和良性)的预测值。