原理:已知样本集中每一个数据与所属分类的对应关系,输入没有标签的新数据后,将新数据与训练集的数据对应特征进行比较,找出“距离”最近的k(通常k<20)数据,选择这k个数据中出现最多的分类作为新数据的分类。
算法描述:(1)计算已知类别数据及中的点与当前点的距离;
(2)按距离递增次序排序
(3)选取与当前点距离最小的k个点
(4)确定前K个点所在类别出现的频率
(5)返回频率最高的类别作为当前类别的预测
距离计算方法有"euclidean”(欧氏距离), “wski”(明科夫斯基距离),"maximum"(切比雪夫距离), "manhattan"(绝对值距离),"canberra"(兰式距离), "minkowski"(马氏距离)等。
最常见以欧氏距离作为衡量标准,下文例子也以欧式距离为标准。
R实现:
以鸢尾花数据集为例来说明K-近邻算法:
鸢尾花数据集包含150个数据,测量变量为花瓣的长度与宽度,花萼的长度与宽度,以及种类分类为setosa, versicolor, 和 virginica。
(1)为了了解数据,应先通过作图分析,相关分析来看看数据分类指标的合理性,这一点十分重要,有助于减少分类指标中的噪声。