Python · 朴素贝叶斯(零)· 简介

Python · 朴素贝叶斯(零)· 简介

(这里是最终成品的 GitHub 地址)

朴素贝叶斯的数学理论方面已经花了三章来讲了:

如果之前对朴素贝叶斯完全陌生的话,个人的建议是把(零)分割线前的算法看懂、然后再来看本章及以后的相关实现,否则可能会有些懵 ( σ'ω')σ

先说一个大概的思路:

  • 离散型朴素贝叶斯的实现围绕着 Numpy 中的 bincount 方法展开
  • 连续型朴素贝叶斯的关键在于极大似然估计
  • 混合型朴素贝叶斯则是以上两者的各种结合

作为第零章,我们先来看看它能干什么。本来要说的话、朴素贝叶斯是很难让人直观地看出来它干了什么的;不过聪明而机智的我(并不!)想出了一个方法:把中间产生的那些条件概率可视化出来不就可以蒙混过关了!(喂

于是我们的朴素贝叶斯模型可以生成类似于这样的图:

(注意:这些图是分开生成的,是我用画图软件【很!辛!苦!地!(并!不!)】把它们拼在一起的 ( σ'ω')σ)

以上 16 张图(离散型特征 9 张、连续型特征 7 张)对应着一个有 16 个特征的、UCI 上的“银行业务数据集”,完整的原始数据集可以参见这里

然后我们实现的朴素贝叶斯模型的最大特点就是:无需对数据进行太多预处理。还是以银行业务数据集为例,它每个样本大概长下面这样:

58, management, married, tertiary, no, 2143, yes, no, 
unknown, 5, may, 261, 1, -1, 0, unknown

我们可以直接把它输进模型而无需做其它多余的工作。当然、这是建立在我们自己写一套数值化数据的方法的基础上的,关于这个数值化数据的实现会放在这里

下一章我们会先介绍怎么搭好朴素贝叶斯的框架,然后再在后面的章节介绍怎样在这个框架上拓展出三种朴素贝叶斯模型(离散、连续、混合)

希望观众老爷们能够喜欢~

猛戳我进入下一章! ( σ'ω')σ

编辑于 2017-04-23

文章被以下专栏收录