本系列教程为《机器学习实战》的读书笔记。首先,讲讲写本系列教程的原因:第一,《机器学习实战》的代码由Python2编写,有些代码在Python3上运行已会报错,本教程基于Python3进行代码的修订;第二:之前看了一些机器学习的书籍,没有进行记录,很快就忘记掉了,通过编写教程也是一种复习的过程;第三,机器学习相对于爬虫和数据分析而言,学习难度更大,希望通过本系列文字教程,让读者在学习机器学习的路上少走弯路。
本系列教程特点:
- 基于《机器学习实战》
- 尽量避免讲太多数学公式,通过简单直白的方式讲解各算法的原理
- 对于算法实现的代码进行详细讲解
哪些读者可以食用:
- 了解机器学习的基本术语
- 会Python语言
- 会numpy和pandas库的使用
k-近邻算法(KNN)原理
KNN算法为分类算法。一句老话来描述KNN算法:“近朱者赤,近墨者黑”。
算法原理:计算测试样本与每个训练样本的距离(距离计算方法见下文),取前k个距离最小的训练样本,最后选择这k个样本中出现最多的分类,作为测试样本的分类。
如图所示,绿色的为测试样本,当k取3时,该样本就属于红色类;当k取5时,就属于蓝色类了。所以k值的选择很大程度影响着该算法的结果,通常k的取值不大于20。
介绍完原理后,看看KNN算法的伪代码流程:
计算测试样本与所有训练样本的距离
对距离进行升序排序,取前k个
计算k个样本中最多的分类