Scikit Learn 使用朴素贝叶斯分类
朴素贝叶斯方法是一套基于贝叶斯定理的监督学习算法,其强烈的假设是所有的预测因子都是相互独立的,即一个类别中的某个特征的存在与同一类别中的任何其他特征的存在都是独立的。这是一个天真的假设,这就是为什么这些方法被称为朴素贝叶斯方法。
贝叶斯定理指出,为了找到类的后验概率,即一个标签和一些观察到的特征的概率,有以下关系,$P\left(\begin{array}{c} Y\arrowvert features\end{array}\right )$。
$$P\left(\begin{array}{c} Y\arrowvert features\end{array}\right)=\left(\frac{P\lgroup Y\rgroup P\left(\begin{array}{c } features\arrowvert Y\end{array}\right)}{P\left(\begin{array}{c} features\end{array}\right)}\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 提供了不同的朴素贝叶斯分类器模型,即 Gaussian、Multinomial、Complement 和 Bernoulli。它们的不同主要在于他们对 ?$P\left(\begin{array}{c} features\arrowvert Y\end{array}\right)$ 的分布做出的假设,即给定类别的预测变量的概率。
序号 | 类型和说明 |
---|---|
1 | 高斯朴素贝叶斯 高斯朴素贝叶斯分类器假设来自每个标签的数据来自简单的高斯分布。 |
2 | 多项式朴素贝叶斯 它假设特征是从一个简单的多项式分布中提取的。 |
3 | 伯努利朴素贝叶斯 该模型中的假设是特征二进制(0 和 1)本质上。伯努利朴素贝叶斯分类的一个应用是使用“词袋”模型的文本分类 |
4 | 补朴素贝叶斯 它旨在纠正多项贝叶斯分类器做出的严格假设。这种NB分类器适用于不平衡的数据集 |
构建朴素贝叶斯分类器
我们还可以在 Scikit-learn 数据集上应用朴素贝叶斯分类器。在下面的示例中,我们正在应用 GaussianNB 并拟合 Scikit-leran 的乳腺癌数据集。
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)
[ 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 组成,它们基本上是来自肿瘤类别(即恶性和良性)的预测值。