hello, 大家好
很多人可能一开始接触传统机器学习算法的时候, 都会感觉到这到底是个什么鬼东西,学了半天感觉就像在看天书一样,读完了貌似也好像懂那么一点点了, 睡了一觉起来,脑子里却啥都不记得了, 因此, 建议大家, 工作学习之余, 一定做一些笔记来记录自己平日所学, 方便我们在以后用到的时候, 可以随时随地拿出来翻阅。
要说明的一点, 我的博客中目前暂时不会系统的介绍机器学习大纲之类的泛泛空洞的东西, 每一篇博客注重的是算法原理的说明与理解, 等自己的知识和经验积累到一定程度的时候, 就有必要去系统化这些知识点,本着对自己负责的原则, 我会认真的写每一篇博客, 大家不喜勿喷就好。
今天要讲解的是【机器学习——KNN算法】
网上已经有很多的博客写的比我好,但我总觉得与其经常去看别人的东西, 不如自己写一写, 俗话说的好:"好记性不如烂笔头", 我相信只有自己真的做过了,感觉才是真实的。
print("*" * 50 ) (这是分割线************************************************)
1、什么是KNN算法?它的原理是什么?
首先我们看一下KNN是什么意思, KNN:【K Nearest Neighbor】 (意思就是与当前样本最近邻的K个样本数据), 简单来说, KNN算法是采用测量不用特征值与当前样本之间的距离的方法来进行分类的一种【二分类算法】
KNN的原理是: 存在一个样本数据集合, 我们称之为【训练集】,并且样本集中的每个数据都存在【标签】,也就是说, 我们知道样本数据与所属分类的一个对应关系。输入没有标签的新数据后, 将新数据的每个特征与样本数据集中数据对应的特征进行比较,然后利用算法提取样本集中特征最相似数据【最近邻】的分类标签,一般来说, 我们只选择样本集中前【K】个最相似的数据,这就是KNN算法【K】的出处,通常K是不大于20的整数,最后我们选择K个最相似数据中出现次数最多的那个分类的标签, 作为我们新输入数据的分类标签。
2、好吧,既然大家都很喜欢引用电影的例子, 那我使用这个例子来简单说明一下KNN算法的计算过程: