机器学习之bayes算法

本文介绍了使用Python实现朴素贝叶斯算法的过程,包括如何处理连续属性的概率估计和解决训练数据中类条件概率为0的问题,如高斯分布计算、拉普拉斯平滑等。同时,文章也分享了作者作为初学者的学习历程,期待与读者交流。

在几位志同道合的小伙伴的带领下,开始了机器学习的路程,然而一切并不是想象的那么简单,因此本文记录了自己的学习路程,希望还能坚持做好这件事。

一个简单的例子,用Python语言实现朴素贝叶斯算法,这里不再介绍算法的理论思想,我会将自己看到的理解的东西写出来做记录,这些可能 是初学者比较困惑的地方。

1.关于连续属性的概率估计

我们针对离散属性的概率估计很好理解,比如说对训练数据中的House统计,很容易得到P(House=Yes|No)=3/7。
但对于Income这一个连续的属性,我们需要使用一点点处理方式来估计他们的概率。

(1)设置区间,比如说划分[120K,>120K),[70K,120K),(<70K,70K)这样子的区间,就可以将连续的属性离散化,但这样做有个很麻烦的问题就是如何才能选取适当的区间,这个问题的解决需要根据个人经验去判断。

(2)另一个估计连续属性的条件概率的方法是通过高斯分布计算。需要计算的有两个参数,均值μ和方差δ²。参数μ可以用标签Y下所有训练记录X样本的均值来估计,δ²可以用这些训练记录的样本方差来估计。

2.训练数据中某个属性的类条件概率等于0

从下面的实例中,我们可以计算得到P(Marriage=Married|Yes)=0,这就导致一个问题,比如我要统计X=(House=No,Marriage=Married,Income=120K)的类标号,我们计算得到的类Yes下的后验概率等于0。即如果某个属性的类条件概率等于0,将会导致整个类的后验概率等于0 。解决方法:

(1)条件概率的m估计(参考数据挖掘导论 Pang-Ning Tang等著)

P(xi|yi)=nc+mpn+m

其中,n是类yi中的实例总数,nc是类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值