Skip to content

第8章:朴素贝叶斯

朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理的简单概率分类器,它假设特征之间相互独立。本章将详细介绍朴素贝叶斯的原理、应用场景以及如何使用Scikit-Learn实现朴素贝叶斯模型。

8.1 朴素贝叶斯原理

8.1.1 贝叶斯定理

朴素贝叶斯分类器基于贝叶斯定理,该定理描述了给定证据下假设的概率。

8.1.2 特征独立性假设

朴素贝叶斯的关键假设是特征之间相互独立,这个假设简化了概率计算。

8.1.3 概率计算

使用贝叶斯定理计算给定特征值的条件下类别的概率,并选择概率最高的类别作为预测结果。

8.2 朴素贝叶斯应用

8.2.1 文本分类

朴素贝叶斯常用于文本分类,如垃圾邮件检测和情感分析。

8.2.2 垃圾邮件检测

朴素贝叶斯可以有效地用于识别和过滤垃圾邮件。

8.2.3 其他应用

朴素贝叶斯也适用于其他分类问题,尤其是在数据集较小或特征维度较高时。

8.3 朴素贝叶斯代码实现

8.3.1 数据准备

我们将使用Scikit-Learn的鸢尾花数据集来演示朴素贝叶斯的实现。

python
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

8.3.2 模型训练

使用Scikit-Learn的MultinomialNB类来训练朴素贝叶斯模型。

python
from sklearn.naive_bayes import MultinomialNB

# 创建朴素贝叶斯分类器实例
nb_classifier = MultinomialNB()

# 训练模型
nb_classifier.fit(X_train, y_train)

8.3.3 模型评估

评估模型在测试集上的性能。

python
from sklearn.metrics import accuracy_score

# 在测试集上进行预测
y_pred = nb_classifier.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy:.2f}")

8.3.4 特征概率估计

查看特征在每个类别下的概率估计。

python
# 获取特征概率
feature_probabilities = nb_classifier.feature_log_prob_

# 可视化特征概率
import matplotlib.pyplot as plt

plt.bar(range(len(feature_probabilities[0])), feature_probabilities[0])
plt.xlabel("Feature Index")
plt.ylabel("Log Probability")
plt.title("Feature Probabilities in Naive Bayes")
plt.show()

8.4 本章小结

本章介绍了朴素贝叶斯的基本原理、应用场景,并使用Scikit-Learn实现了一个简单的朴素贝叶斯模型。通过数据准备、模型训练、评估和特征概率估计,我们可以看到朴素贝叶斯在处理分类问题中的有效性。理解朴素贝叶斯的工作原理和代码实现对于深入学习基于概率的分类方法至关重要。