一看就懂的教程:朴素贝叶斯
作者:互联网
虽然这篇是一看就懂的教程,但是仍然建议你有一些先修知识:
- 具有基本的数学素养:微积分,线性代数,统计学
- 具有简单的编程基础:了解一点Git和Github的知识,简单的Python知识
如果不具备以上条件的话,可以从以下一些入手:
当然如果你想直接看这篇文章做一个大概的了解,或者想一边看一边查漏补缺,哪里不会再学习哪里,也是OK的
监督分类Supervised Classification
首先我们熟悉一个概念,什么是”监督分类“,比方说现在有一个问题”马是acerous吗?“(你不必知道什么是acerous)
鉴于你并不知道什么acerous,那么这里有一些例子给你参考:
acerous:猫、兔子、猪、鹦鹉、大象
non-acerous:长颈鹿、犀牛、山羊
那么你现在知道马是不是acerous了呢?答错也没有关系,毕竟这里只有8个例子而已,如果给你10000个例子,你一定可以非常确定的说出马是不是acerous。
答案是:马是acerous,这个分类的标准就是看有没有角。好的,到这里你应该有点get到什么是监督分类了,根据一些特征(features)来进行分类。类似的例子还有根据某人的音乐喜好以及其所爱音乐的特点,比如节奏或流派推荐一首他们可能会喜欢的歌,也是监督分类
而对于我们不知道的特征,比方说从一组照片中找到某个特定的人,我们并没有很明确的一些特征来识别这个人,或者说特征实在是太多了,因此就不是监督分类
散点图
通过监督分类,我们知道了当我们需要处理一个新的情况的时候,需要首先明确过往例子的一些特征
我们再来看一个非常简单的例子:无人驾驶(这能叫一个简单的例子?看起来很难懂啊)
虽然无人驾驶很复杂,但是我们简化为一辆车在一片沙漠上,没有人,没有建筑,路面情况简化到只有两个特征:1坡度(Slope)2路面颠簸程度(Bumpness)
很明显,图中红圈的平坦不颠簸的情况对应散点图的红×位置
散点图可以帮助我们直观的观察数据,机器学习很重要的一个问题就是:给你一个全新的数据,通过对以往的数据的认识,对这个全新的数据进行预测
决策面
这个概念也非常的简单,现在你拿到的是如图的一个数据集,黑色的点是属于蓝色那一堆呢?还是红色那一堆呢?
好像不是很清楚哦。如果我们有了一个决策面就会很方便了
还回到刚刚的无人驾驶例子,共有750个数据,蓝色的点代表可以快速行驶,红色的点需要慢速行驶 :
特征 features:坡度(纵轴)、路面颠簸 (横轴)
标签 lables:快慢 (蓝色or红色的点)
这是它的决策面
Sklearn
Sklearn是一个非常有帮助的基于 Python 语言的机器学习工具。其中也包含我们本篇文章要介绍的朴素贝叶斯算法 Sklearn官方中文文档
朴素贝叶斯是一种非常简单的用于不同相互独立特征下的分类,之前我们讲到的决策面,或者说面对一个新的数据,如何进行分类都是用的朴素贝叶斯算法。
想要了解背后的公式原理可以看这篇博文 带你彻彻底底搞懂朴素贝叶斯公式,一点都不难的哦
由于我们要处理的是分类的问题,因此这里我们使用
来,我们打开这个页面,翻到页面的example,下图就是关键代码的含义
Quiz
1.有关地形数据的GaussianNB部署
最后让我们做一个小小的测验来检查对前面知识的理解,这个quiz还是我们之前提到的无人车的模型
贝叶斯小测验classroom.udacity.com/courses/ud120/lessons/2254358555/concepts/24196685390923
不要被这么多的代码吓到了,你只需要把ClassifyNB.py中的代码补上就好了,其他三个文件都不要更改,如果运行成功就会出现下面的图片,形成一个决策面
给你一个小提示:朴素贝叶斯-高斯模型这里的example非常有用哦~
如果要查看答案
答案github.com/CarolRen233/MachineLearning/blob/master/NaiveBayes/GaussianNB/ClassifyNB.py
2.计算GaussianNB的准确性
如果你完成了上面的Quiz,还可以继续计算GaussianNB的准确性哦,看看用预测的结果与实际的结果有多少是一致的。
Udacityclassroom.udacity.com/courses/ud120/lessons/2254358555/concepts/22853385400923
提示
1.features_test 和 labels_test 适用于测试的数据,可以先用features_test来进行预测,预测结果与labels_test进行对比
2.不妨用“sklearn accuracy”的关键词搜索一下,可以找到相关代码
答案github.com/CarolRen233/MachineLearning/blob/master/NaiveBayes/GaussianNB/Classify.py
标签:教程,acerous,分类,贝叶斯,GaussianNB,例子,朴素 来源: https://blog.csdn.net/dfly_zx/article/details/123142688