使用 Python 进行朴素贝叶斯分类

本文详细介绍了朴素贝叶斯分类器的工作原理,包括条件概率、贝叶斯定理及其应用。通过德语瑞士演讲者的例子解释了条件概率,并探讨了假阳性和假阴性的概念。接着,文章通过一个入门练习展示了如何使用Python实现朴素贝叶斯分类器,涉及到数据准备、特征设计和频率分布。最后,讨论了朴素贝叶斯分类器的基本理论。
摘要由CSDN通过智能技术生成

定义

托马斯贝叶斯:条件概率

在机器学习中,贝叶斯分类器是一种简单的概率分类器,它基于应用贝叶斯定理。朴素贝叶斯分类器使用的特征模型做出了很强的独立性假设。这意味着一个类的特定特征的存在与其他所有特征的存在是独立的或无关的。

独立事件的定义:

两个事件 E 和 F 是独立的,如果 E 和 F 都有正概率并且如果 P(E|F) = P(E) 和 P(F|E) = P(F)

正如我们在定义中所述,朴素贝叶斯分类器基于贝叶斯定理。贝叶斯定理基于条件概率,我们现在将定义:

条件概率

磷(一个|乙)代表“A 的条件概率给定 B”,或“A 在条件 B 下的概率”,即在假设事件 B 发生的情况下某个事件 A 的概率。当在随机实验中已知事件 B 已经发生时,实验的可能结果减少到 B,因此 A 发生的概率从无条件概率变为给定 B 的条件概率。 联合概率是两个事件同时发生的概率。也就是说,它是两个事件一起发生的概率。A 和 B 的联合概率有 3 种记法,可以写成

  • 磷(一个∩乙)
  • 磷(一个乙) 或者
  • 磷(一个,乙)

条件概率定义为

磷(一个|乙)=磷(一个∩乙)磷(乙)

条件概率示例

德语瑞士演讲者

大约有 840 万人居住在瑞士。大约 64% 的人会说德语。地球上大约有75亿人。

如果一些外星人随机地向地球人发出光芒,那么他是说德语的瑞士人的可能性有多大?

我们有活动

S:是瑞士人

GS:德语口语

随机选择的人是瑞士人的概率:

磷(秒)=8.47500=0.00112

如果我们知道某人是瑞士人,说德语的概率是 0.64。这对应于条件概率

磷(G秒|秒)=0.64

所以地球人是瑞士人说德语的概率,可以用下面的公式计算:

磷(G秒|秒)=磷(G秒∩秒)磷(秒)

插入上面的值给我们:

0.64=磷(G秒∩秒)0.00112

磷(G秒∩秒)=0.0007168

因此,我们的外星人最终有 0.07168 % 的机会成为讲德语的瑞士人。

假阳性和假阴性

一家医学研究实验室提议进行一项筛查,以测试一大群人是否患有某种疾病。反对这种筛选的一个论点是假阳性筛选结果的问题。

假设该组中有 0.1% 的人患有这种疾病,其余的人都很好:

磷(”秒一世C克”)=0,1

磷(”瓦电子升升”)=99,9

以下是筛选测试的真实情况:

如果您患有这种疾病,则测试结果有 99% 的时间会呈阳性,如果您没有患病,则测试结果有 99% 的时间会呈阴性:

P(“测试阳性”|“很好”)= 1 %

P(“测试阴性”|“很好”)= 99 %。

最后,假设当测试应用于患有这种疾病的人时,有 1% 的机会出现假阴性结果(并且有 99% 的机会得到真阳性结果),即

P("测试阴性" | "生病") = 1 %

P("测试阳性" | "生病") = 99 %

生病的 健康 总计
检测结果阳性 99 999 1098
测试结果阴性 1 98901 98902
总计 100 99900 100000

有 999 个误报和 1 个误报。

问题:

在许多情况下,甚至医疗专业人员都认为“如果您患有这种疾病,则检测结果在 99% 的情况下会呈阳性,如果您没有感染,则检测结果在 99% 的情况下会呈阴性。在 1098仅报告阳性结果的病例 99 (9 %) 例是正确的,999 例是假阳性 (91 %),即如果一个人的检测结果呈阳性,则他或她实际患有该疾病的概率仅为 9 % . P("生病" | "测试阳性") = 99 / 1098 = 9.02 %

贝叶斯定理

我们计算了条件概率 磷(G秒|秒),这是一个人说德语的概率,如果他或她被称为瑞士人。为了计算这一点,我们使用了以下等式:

磷(G秒|秒)=磷(G秒,秒)磷(秒)

如何计算概率 磷(秒|G秒),即假设某人说德语的情况下某人是瑞士人的概率?

该等式如下所示:

磷(秒|G秒)=磷(G秒,秒)磷(G秒)

让我们隔离两个方程 磷(G秒,秒):

磷(G秒,秒)=磷(G秒|秒)磷(秒)磷(G秒,秒)=磷(秒|G秒)磷(G秒)

由于左侧相等,因此右侧也必须相等:

磷(G秒|秒)*磷(秒)=磷(秒|G秒)磷(G秒)

这个方程可以转化为:

磷(秒|G秒)=磷(G秒|秒)磷(秒)磷(G秒)

结果符合贝叶斯定理

为了解决我们的问题,即一个人是瑞士人的概率,如果我们知道他或她说德语——我们所要做的就是计算右边。我们从之前的练习中已经知道

磷(G秒|秒)=0.64

磷(秒)=0.00112

世界上以德语为母语的人数相当于 1.01 亿,所以我们知道

磷(G秒)=1017500=0.0134667

最后,我们可以计算 磷(秒|G秒) 通过替换我们方程中的值:

磷(秒|G秒)=磷(G秒|秒)磷(秒)磷(G秒)=0.64*0.001120.0134667=0.0532276

大约有 840 万人居住在瑞士。大约 64% 的人会说德语。地球上大约有75亿人。

如果一些外星人随机地向地球人发出光芒,那么他是说德语的瑞士人的可能性有多大?

我们有活动

秒: 瑞士人 G秒: 德语

磷(秒)=8.47500=0.00112磷(一个|乙)=磷(乙|一个)磷(一个)磷(乙)

磷(一个|乙) 是条件概率 一个,给定 乙 (后验概率), 磷(乙) 是先验概率 乙 和 磷(一个) 的先验概率 一个. 磷(乙|一个) 是条件概率 乙 给予 一个,称为可能性。

朴素贝叶斯分类器的一个优点是它只需要少量的训练数据来估计分类所需的参数。因为假设了自变量,所以只需要确定每个类的变量的方差,而不是整个协方差矩阵。

入门练习

汉堡的主要火车站

让我们踏上火车之旅,创建我们的第一个非常简单的朴素贝叶斯分类器。假设我们在汉堡市,我们想前往慕尼黑。我们将不得不在美因河畔法兰克福换乘火车。我们从以前的火车旅行中知道,我们从汉堡出发的火车可能会晚点,我们将赶不上法兰克福的转机火车。我们无法赶上接驳列车的可能性取决于我们可能的延误有多高。接驳列车的等待时间不会超过五分钟。有时另一列火车也会晚点。

以下列表“in_time”(从汉堡出发的火车及时到达以赶上前往慕尼黑的连接火车)和“too_late”(错过连接火车)是显示几周内情况的数据。每个元组的第一个组件显示火车晚点的分钟数,第二个组件显示发生这种情况的时间。

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值