- Scikit Learn 教程
- Scikit Learn - 首页
- Scikit Learn - 简介
- Scikit Learn - 建模过程
- Scikit Learn - 数据表示
- Scikit Learn - 估计器 API
- Scikit Learn - 约定
- Scikit Learn - 线性建模
- Scikit Learn - 扩展线性建模
- 随机梯度下降
- Scikit Learn - 支持向量机
- Scikit Learn - 异常检测
- Scikit Learn - K 近邻算法
- Scikit Learn - KNN 学习
- 朴素贝叶斯分类
- Scikit Learn - 决策树
- 随机决策树
- Scikit Learn - 集成方法
- Scikit Learn - 聚类方法
- 聚类性能评估
- 使用 PCA 进行降维
- Scikit Learn 有用资源
- Scikit Learn - 快速指南
- Scikit Learn - 有用资源
- Scikit Learn - 讨论
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 提供了不同的朴素贝叶斯分类器模型,即高斯、多项式、互补和伯努利。它们的主要区别在于它们对 𝑷$P\left(\begin{array}{c} features\arrowvert Y\end{array}\right)$(即给定类别的预测变量的概率)的分布所做的假设。
| 序号 | 模型及描述 |
|---|---|
| 1 |
高斯朴素贝叶斯
高斯朴素贝叶斯分类器假设每个标签的数据都来自一个简单的正态分布。 |
| 2 |
多项式朴素贝叶斯
它假设特征是从一个简单的多项式分布中提取的。 |
| 3 |
伯努利朴素贝叶斯
该模型的假设是特征本质上是二元的(0 和 1)。伯努利朴素贝叶斯分类的一个应用是使用“词袋”模型进行文本分类。 |
| 4 |
互补朴素贝叶斯
它旨在纠正多项式贝叶斯分类器做出的严格假设。这种 NB 分类器适用于不平衡的数据集。 |
构建朴素贝叶斯分类器
我们也可以在 Scikit-learn 数据集上应用朴素贝叶斯分类器。在下面的示例中,我们正在应用 GaussianNB 并拟合 Scikit-leran 的 breast_cancer 数据集。
示例
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,它们基本上是来自肿瘤类别(即恶性和良性)的预测值。