朴素贝叶斯介绍

  • 朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理与特征条件独立假设的分类方法。
  • 在机器学习中,朴素贝叶斯模型是一种常见的监督学习算法,主要应用于文本分类,例如垃圾邮件和新闻分类,但它同样可以应用于其他领域中

类型

朴素贝叶斯分类器有几种不同的类型,取决于特征的概率分布:
	伯努利朴素贝叶斯:适用于特征是二元的情况。
	多项式朴素贝叶斯:适用于特征是多项式分布的情况,如单词计数。
	高斯朴素贝叶斯:适用于特征是连续变量且呈正态分布的情况

朴素贝叶斯原理

  • “朴素”一词来源于算法的一个关键假设:假设特征之间相互独立。也就是说,一个特征或属性的出现不依赖于其他特征。这个假设虽然在实际问题中往往不成立,但在实际应用中,朴素贝叶斯分类器通常表现良好,并且由于它的简单和高效,在很多情况下都是一个不错的选择。
  • 朴素贝叶斯的基础是贝叶斯定理,该定理描述了随机事件A和B的条件概率和边缘概率之间的关系,公式如下:
    P(A|B) = P ( B ∣ A ) P ( B ) \frac{P(B|A)}{P(B)} P(B)P(BA)
    其中:
    • P(A∣B) 是在B发生的条件下A发生的概率。
    • P(B∣A) 是在A发生的条件下B发生的概率。
    • P(A) 和 P(B) 分别是A和B发生的概率。

算法步骤

  1. 数据准备:确定特征和类别
  2. 模型训练:计算先验概率和条件概率.
    • 先验概率 P(类别):每个类别在训练集中的相对频率。
    • 条件概率 P(特征∣类别):在给定类别下,每个特征发生的概率。
  3. 应用贝叶斯定理:对于给定的输入,计算它属于每个类别的后验概率。
  4. 决策:选择具有最高后验概率的类别作为预测结果

朴素贝叶斯的优劣点

优点

计算效率高,易于实现。
在数据量较小的情况下仍然表现良好。
对于缺失数据不敏感。

缺点

特征独立性的假设在现实中往往不成立。
如果某个类别在测试数据中并未出现,模型会预测该类别的概率为0,这可能导致模型性能下降(称为“零概率”问题)

朴素贝叶斯如何处理连续属性

  • 朴素贝叶斯分类器在处理连续属性时,通常假设这些属性服从高斯分布(也称为正态分布)
  1. 计算每个类别的均值和方差
  2. 使用高斯概率密度函数计算条件概率
  3. 应用朴素贝叶斯分类
  4. 选择具有最高后验概率的类别

相关代码

    def continuous_properties(self, data):
        """
        连续属性处理(数字)
        :return:
        """
        o = np.mean(data)
        u = np.var(data)
        return lambda x: (1/(np.sqrt(2*np.pi)*o))*np.exp(-np.square(x-u)/(2*np.square(o)))

    def discrete_attributes(self, data):
        """
        离散属性处理
        :return:
        """
        all_ = len(data)
        return lambda x: {i:(len(data[data==i])+self.r)/(all_+self.all_*self.r) for i in set(data)}[x]
Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐