🌟欢迎来到 我的博客 —— 探索技术的无限可能!
🌟博客的简介(文章目录)
目录
- 实战(贝叶斯分类)
- 莺尾花数据
- 模拟离散数据集
- 库函数导入
- 数据导入和分析
- 模型训练和预测
- 总结
实战(贝叶斯分类)
莺尾花数据
接上文:机器学习算法 —— 朴素贝叶斯
模拟离散数据集
库函数导入
import random
import numpy as np
import warnings
warnings.filterwarnings('ignore')
# 加载莺尾花数据集
from sklearn import datasets
# 使用基于类目特征的朴素贝叶斯
from sklearn.naive_bayes import CategoricalNB
from sklearn.model_selection import train_test_split
数据导入和分析
# 模拟数据
rng = np.random.RandomState(1)
# 随机生成600个100维的数据,每一维的特征都是[0, 4]之前的整数
X = rng.randint(5, size=(600, 100))
y = np.array([1, 2, 3, 4, 5, 6] * 100)
data = np.c_[X, y]
# X和y进行整体打散
random.shuffle(data)
X = data[:,:-1]
y = data[:, -1]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
所有的数据特征都是离散特征,我们引入基于离散特征的朴素贝叶斯分类器。
模型训练和预测
clf = CategoricalNB(alpha=1)
clf.fit(X_train, y_train)
acc = clf.score(X_test, y_test)
print("Test Acc : %.3f" % acc)
随机数据测试,分析预测结果,贝叶斯会选择概率最大的预测结果,比如这里的预测结果是4,4对应的概率最大,由于我们是随机数据,每个人运行的时候,可能会出现不一样的结果。
x = rng.randint(5, size=(1, 100))
print(clf.predict_proba(x))
print(clf.predict(x))
总结
贝叶斯分类是一类基于统计学的分类算法,其核心思想是通过计算后验概率来预测样本所属类别。
-
贝叶斯分类的基础理论
- 理论基础:贝叶斯分类技术是一种非规则的分类方法,它通过对已分类的样本子集进行训练,学习归纳出分类函数[1]。
- 特点:贝叶斯分类使用概率来表示所有形式的不确定性,并且能够使所有的属性都参与到分类中,其属性可以是离散的、连续的,也可以是混合的[1]。
- 原理:基于统计学的贝叶斯分类方法以贝叶斯理论为基础,通过求解后验概率分布,预测样本属于某一类别的概率。朴素贝叶斯分类模型假定任意属性对类别的影响与其他属性对类别的影响无关,这种假设被称为类条件独立朴素假定[1]。
-
贝叶斯分类的关键概念
- 先验概率与后验概率:贝叶斯分类中,先验概率是指在考虑实验结果之前,根据经验及先前知识所得到的概率。而后验概率则是在考虑了实验结果或附加信息之后得到的更新概率[5]。
- 可能性函数:可能性函数是一个调整因子,使得预估概率更接近真实概率。在贝叶斯推断中,它用于调整先验概率得到后验概率[5]。
- 条件独立性假设:这是朴素贝叶斯分类器的核心假设,即假设各特征之间相互独立,从而简化了后验概率的计算过程[1][5]。
-
朴素贝叶斯的应用实例
- 文本分类:朴素贝叶斯分类算法在文本分类领域有着广泛的应用,如垃圾邮件过滤、情感分析等[3]。
- 实际应用方式:朴素贝叶斯分类器可以事先计算好所有概率估值并存储起来,便于快速预测;或者采用懒惰学习方式,待收到预测请求时再进行概率估值;还可以实现增量学习,适应数据不断增加的情况[5]。
-
朴素贝叶斯的优缺点
- 优点:算法简单易懂,学习效率高,尤其在数据量较大的情况下表现出较高的准确率[3]。
- 缺点:朴素贝叶斯的条件独立性假设在现实中往往不成立,这可能会影响分类的准确性[3]。
此外,在深入了解贝叶斯分类的基础上,以下是一些具体的实践建议:
- 在应用朴素贝叶斯算法时,应先检查数据集中的特征是否满足或近似满足独立性假设,以避免由于违反这一假设而引起的性能下降。
- 对于连续属性的数据,需要特别注意概率密度函数的选择和参数估计,以确保模型的准确性。
- 考虑到朴素贝叶斯可能由于独立性假设而导致精度受限,可以探索使用贝叶斯网络或其他更复杂的贝叶斯模型来提高分类准确性。
总的来说,贝叶斯分类以其独特的概率论基础,在机器学习领域占据了重要的位置。尽管朴素贝叶斯算法存在假设上的局限性,但其简洁性和在一些情况下出人意料的良好性能使其成为许多实际问题的首选方法。通过合理选择和应用不同的贝叶斯分类算法,可以在各种分类任务中达到既高效又准确的效果。