手写Naive Bayes分类器

本文介绍了如何手写一个Naive Bayes Classifier,以解决Pima Indians Diabetes数据集上的分类问题。通过理解贝叶斯定理,建立模型并采用正态分布来处理特征。在训练集上构建分类器,并在测试集上评估精度。
摘要由CSDN通过智能技术生成

哈哈哈,我又回来了,终于快到了喜大普奔的假期时间,让我们一起快乐的写博客吧。收,回正题。今天我们要来手撕一下Naive Bayes Classifier(朴素贝叶斯分类器)。为什么说手撕呢,是因为这次我们要自己实现Naive Bayes Classifier 除了对数据的处理以外,都不会使用任何外部库,来一次硬刚!

引入

我们能否在医疗记录数据集上建立分类器模型,进而预测被研究对象是否患糖尿病?

实际问题

长期以来,研究人员对 Pima Indians(此处暂译作皮马印第安人)都有极大的研究兴趣,因为他们是世界上糖尿病发病率最高的人群之一。记录皮马印第安人医疗数据及是否患有糖尿病的数据集 pima-indians-diabetes.csv 也成为了一个著名的数据集。
该数据集最初归National Institute of Diabetes and Digestive and Kidney Diseases所有,记录了怀孕次数、血压、BMI、年龄等信息。
pima-indians-diabetes.csv from kaggle
在本次实验中,我们将在训练集上建立 Naive Bayes 分类器,并在测试集上评估模型的精度。

理论知识

之前在ISL-Chap2剩余部分笔记的贝叶斯分类器部分大略提过一下贝叶斯分类器,但是由于那篇文章的重点在如何衡量模型好坏,所以主要描述了bayers error rate(衡量贝叶斯分类器的好坏)。这一次,我们来详细写一下贝叶斯分类器的原理。

Naive Bayes

首先,我们先回顾一下 Naive Bayes Classifier 的目的。既然是分类器,要做的就是根据一部分信息( X ⃗ \vec{X} X )预测其对应的 label ( Y Y Y)。拿我们这次的实际问题举例,就是把一个人的怀孕次数、血压、BMI、年龄等信息作为输入,扔进训练好的Naive Bayes Classifier 中,让它预测这个人有没有患糖尿病。
classifier
理解了分类器的目的以后,让我们换一个角度来思考这个问题。如果我们用概率的思维方式来思考这件事,其实也就变成了,我们要找到给定某个 X ⃗ \vec{X} X 的情况下,label取哪个值的概率更高。拿这次的实际问题举例,假定我们现在有了一个人的怀孕次数、血压、BMI、年龄的数据,构成了向量 X ⃗ = ( 1 , 74 , 25.6 , 30 ) \vec{X}=(1, 74, 25.6, 30) X =(1,74,25.6,30), 我们想要知道她是患糖尿病的概率大还是不患糖尿病的概率大(Y=1还是Y=0的概率大)。
抽象一点,用数学公式表示,也就是找到使得 P ( Y ∣ X ⃗ ) P(Y|\vec{X}) P(YX )最大的Y。
但是这里就出现问题了, P ( Y ∣ X ⃗ ) P(Y|\vec{X}) P(YX )是多少鸭,我们不知道鸭。憋着急,现在就轮到贝叶斯定理闪亮登场了。
P ( A ∣ B ) = P ( A ) × P ( B ∣ A ) P ( B )

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值