欢迎关注哈希大数据微信公众号【哈希大数据】
1 KNN算法基本介绍
K-Nearest Neighbor(k最邻近分类算法),简称KNN,是最简单的一种有监督的机器学习算法。也是一种懒惰学习算法,即开始训练仅仅是保存所有样本集的信息,直到测试样本到达才开始进行分类决策。
KNN算法的核心思想:要想确定测试样本属于哪一类,就先寻找所有训练样本中与该测试样本“距离”最近的前K个样本,然后判断这K个样本中大部分所属的类型,就认为是该测试样本的类型。也就是所谓的“近朱者赤近墨者黑”,根据与其最近的k个样本的类型决定其自身的类型。因此K的确定和测算距离的方式是影响样本最终分类准确率的重要因素。
常用的测算距离的方法是多维空间的欧式距离法。
其优点为:易于理解,实现简单,无需估计参数,无需训练。
缺点为:需要保存所有的训练数据,内存开销大,而且训练数据较多时会导致很高的算法复杂度,训练数据类型不均匀可能会导致预测准确率下降。
2 标准数据集介绍
我们将采用scikit-learn库中自带的鸢尾花数据集进行测试。可以在D:\anaconda python\pkgs\scikit-learn-0.19.0-np113py36_0\Lib\site-packages\sklearn\datasets\data路径下查看元数据,部分数据实例如下图(共计150条数据)。
image
鸢尾花数据集包括鸢尾花的测量数据(特征属性)以及其所属的类别。
测量数据特征包括: 萼片长度、萼片宽度、花瓣长度、花瓣宽度
所属类别有三类: Iris Setosa,Iris