python实现朴素贝叶斯同时处理离散和连续属性
朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理与特征条件独立假设的分类方法。在机器学习中,朴素贝叶斯模型是一种常见的监督学习算法,主要应用于文本分类,例如垃圾邮件和新闻分类,但它同样可以应用于其他领域中。
·
朴素贝叶斯介绍
- 朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理与特征条件独立假设的分类方法。
- 在机器学习中,朴素贝叶斯模型是一种常见的监督学习算法,主要应用于文本分类,例如垃圾邮件和新闻分类,但它同样可以应用于其他领域中
类型
朴素贝叶斯分类器有几种不同的类型,取决于特征的概率分布:
伯努利朴素贝叶斯:适用于特征是二元的情况。
多项式朴素贝叶斯:适用于特征是多项式分布的情况,如单词计数。
高斯朴素贝叶斯:适用于特征是连续变量且呈正态分布的情况
朴素贝叶斯原理
- “朴素”一词来源于算法的一个关键假设:假设特征之间相互独立。也就是说,一个特征或属性的出现不依赖于其他特征。这个假设虽然在实际问题中往往不成立,但在实际应用中,朴素贝叶斯分类器通常表现良好,并且由于它的简单和高效,在很多情况下都是一个不错的选择。
- 朴素贝叶斯的基础是贝叶斯定理,该定理描述了随机事件A和B的条件概率和边缘概率之间的关系,公式如下:
P(A|B) = P ( B ∣ A ) P ( B ) \frac{P(B|A)}{P(B)} P(B)P(B∣A)
其中:- P(A∣B) 是在B发生的条件下A发生的概率。
- P(B∣A) 是在A发生的条件下B发生的概率。
- P(A) 和 P(B) 分别是A和B发生的概率。
算法步骤
- 数据准备:确定特征和类别
- 模型训练:计算先验概率和条件概率.
- 先验概率 P(类别):每个类别在训练集中的相对频率。
- 条件概率 P(特征∣类别):在给定类别下,每个特征发生的概率。
- 应用贝叶斯定理:对于给定的输入,计算它属于每个类别的后验概率。
- 决策:选择具有最高后验概率的类别作为预测结果
朴素贝叶斯的优劣点
优点
计算效率高,易于实现。
在数据量较小的情况下仍然表现良好。
对于缺失数据不敏感。
缺点
特征独立性的假设在现实中往往不成立。
如果某个类别在测试数据中并未出现,模型会预测该类别的概率为0,这可能导致模型性能下降(称为“零概率”问题)
朴素贝叶斯如何处理连续属性
- 朴素贝叶斯分类器在处理连续属性时,通常假设这些属性服从高斯分布(也称为正态分布)
- 计算每个类别的均值和方差
- 使用高斯概率密度函数计算条件概率
- 应用朴素贝叶斯分类
- 选择具有最高后验概率的类别
相关代码
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]

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