首页 分享 三种朴素贝叶斯算法(高斯、伯努利、多项式)在鸢尾花数据集上的完整代码实现

三种朴素贝叶斯算法(高斯、伯努利、多项式)在鸢尾花数据集上的完整代码实现

来源:花匠小妙招 时间:2026-03-02 07:33

朴素贝叶斯(Naive Bayes)是一类基于贝叶斯定理与特征条件独立性假设的**概率分类算法**,其核心思想是:在已知样本特征的前提下,计算该样本属于各个类别的后验概率,并将样本划分至后验概率最大的类别中。该算法之所以被称为“朴素”,是因为它对所有特征之间相互独立这一强假设进行了简化处理——即给定类别条件下,各特征彼此条件独立。尽管这一假设在现实中往往不成立(例如鸢尾花的花瓣长度与宽度通常存在相关性),但大量实证研究表明,朴素贝叶斯在许多实际任务中仍表现出优异的分类性能、极高的训练与预测效率,以及出色的鲁棒性和抗噪能力,尤其适用于高维稀疏数据(如文本分类)、小样本场景及实时推理系统。 本资源聚焦于三种主流朴素贝叶斯变体在经典鸢尾花(Iris)数据集上的完整Python代码实现:**高斯朴素贝叶斯(Gaussian Naive Bayes)**、**伯努利朴素贝叶斯(Bernoulli Naive Bayes)** 和 **多项式朴素贝叶斯(Multinomial Naive Bayes)**。鸢尾花数据集由R.A. Fisher于1936年提出,包含150个样本,分为3个类别(Setosa、Versicolor、Virginica),每类50个样本;每个样本具有4个连续型数值特征:萼片长度(cm)、萼片宽度(cm)、花瓣长度(cm)、花瓣宽度(cm)。该数据集规模适中、结构清晰、类别线性可分程度适中,是验证分类算法原理、调试实现细节、对比模型行为的理想基准。 高斯朴素贝叶斯适用于**连续型特征**,其核心假设是:在每个类别下,各特征服从独立的正态分布(高斯分布)。因此,模型训练阶段需对每个类别c和每个特征j分别估计均值μ_{c,j}与标准差σ_{c,j};预测时,利用高斯概率密度函数计算P(x_j|c),再结合先验概率P(c)与贝叶斯公式,求得后验概率P(c|x)。该方法天然适配鸢尾花的原始数值特征,无需离散化,是其最自然、最常用的建模方式。 伯努利朴素贝叶斯则专为**二值化(布尔型)特征**设计,典型应用于文本分类中的词存在性建模(如“某词是否在文档中出现”)。其假设是:在给定类别下,每个特征取值为1或0,且服从独立的伯努利分布。因此,在鸢尾花数据集上应用伯努利NB,必须首先对原始连续特征进行**阈值二值化处理**(如设定阈值为中位数,大于则为1,否则为0),从而将四维连续向量转换为四维布尔向量。此时模型学习的是各类别下各维度“激活”(即取1)的概率p_{c,j}=P(x_j=1|c),并采用伯努利概率质量函数进行似然计算。该变体对特征的绝对数值不敏感,仅关注“有/无”信号,因而对异常值和尺度差异具有更强鲁棒性,但也可能损失大量数值信息。 多项式朴素贝叶斯面向**离散型计数特征**,常用于文档词频(TF)或n-gram频次建模。其假设是:在给定类别下,特征向量服从多项式分布,即每个样本可视为从一个固定词汇表中重复抽样生成。应用于鸢尾花时,需先对连续特征进行**等宽/等频离散化**(如划分为3–5个区间,映射为整数标签),将原始浮点特征转化为整数频次或类别索引;随后模型估计各类别下各离散化区间的条件概率P(x_j=k|c),并使用多项式概率质量函数联合建模多维特征。该方法保留了部分序关系与分布形态,比伯努利更精细,但对离散化策略高度敏感。 三者虽同属朴素贝叶斯框架,却因底层概率分布假设迥异,导致参数估计方式、适用数据形态、数值稳定性机制(如拉普拉斯平滑/Lidstone平滑的引入逻辑)、以及对零频问题(未见特征组合)的处理策略各不相同。本资源不仅提供标准scikit-learn接口调用示例,更深入展开**纯手工NumPy实现**:包括数据预处理(标准化/二值化/离散化)、先验概率计算、各类条件概率参数估计、对数概率防下溢技巧、预测逻辑封装及准确率/混淆矩阵评估,辅以详尽注释与可视化分析(如各类别下各特征的高斯拟合曲线、二值化后各类别特征激活热力图、离散化区间分布直方图)。通过对比三者在同一数据集上的训练误差、测试准确率、决策边界形态及特征重要性排序,可深刻理解“分布假设—数据形态—模型性能”之间的内在耦合关系,进而掌握如何依据实际业务数据的统计特性(连续/离散/稀疏/密集/尺度差异/相关性强度)科学选型与定制朴素贝叶斯模型。此外,代码中还涵盖交叉验证、超参调优(如伯努利中的二值化阈值、多项式中的平滑系数α)、特征缩放影响分析等工程实践要点,构成一套从理论推导、数学建模、编程实现到效果评估的完整闭环学习体系,是深入理解概率分类范式不可多得的实践范本。

相关知识

朴素贝叶斯算法对鸢尾花分类
Python鸢尾花分类:朴素贝叶斯实战与可视化
KNN、NB、SVM实现鸢尾花分类
贝叶斯算法实战:从原理到鸢尾花数据集分类
鸢尾花数据集分类(决策树,朴素贝叶斯,人工神经网络)
高斯朴素贝叶斯方法进行鸢尾花分类
机器学习实验:朴素贝叶斯算法实现对iris鸢尾花数据集的分类
朴素贝叶斯对鸢尾花数据集进行分类
基于朴素贝叶斯的鸢尾花数据集分类
基于机器学习的鸢尾花数据集的三分类算法的实现 C++

网址: 三种朴素贝叶斯算法(高斯、伯努利、多项式)在鸢尾花数据集上的完整代码实现 https://www.huajiangbk.com/newsview2577048.html

所属分类:花卉
上一篇: 花卉便笺(自制花卉标签怎么做)
下一篇: 巢虫清木片的制作方法(巢虫清木片

推荐分享