KNN分类算法
K最近邻(KNN,K-NearestNeighbor)是1967年由Cover T和Hart P提出的一种基本分类与回归方法,它是数据挖掘分类技术中最简单的方法之一,非常容易理解应用。所谓K最近邻,就是K个最近的邻居的意思,说的是每个样本都可以用它最接近的(一般用距离最短表示最接近)K个邻居来代表。如果K个邻居里大多数都属于某一个类别,那么该样本也被划分为这个类别。 KNN算法中所选择的邻居都是已经正确分类的对象,属于懒惰学习,即KNN没有显式的学习过程,没有训练阶段。待收到新样本后直接进行处理。 算法描述: 1)计算测试数据与各个训练数据之间的距离; 2)按照距离的递增关系进行排序; 3)选取距离最小的K个点; 4)确定前K个点所在类别的出现频率; 5)返回前K个点中出现频率最高的类别作为测试数据的预测分类. 通常k是不大于20的整数,上限是训练数据集数量n的开方,随着数据集的增大,K的值也要增大。 依赖于训练数据集和K的取值,输出结果可能会有不同。所以需要评估算法的正确率,选取产生最小误差率的K:比如我们可以提供已有数据的90%作为训练样本来训练分类器,而使用其余的10%数据去测试分类器,检测错误率是否随着K值的变化而减小。需要注意的是,10%的测试数据应该是随机选择的。 python示例1 ( sklearn包封装了KNN算法 ) import numpy as np