k近邻算法,顾名思义,找前k个最近的“邻居”。
所以,怎样算近?就是距离小的。
怎么算距离?以下。
现有一组数据集,
DataSet = [ [0.1,0.0] , [0.7,1.1] , [1.2,1.0] , [0.2,0.3] ] 对应标签为 labels = [ 'A','B' ,'B' ,'A' ]
我们现在想知道 [0.9,1.1] 属于哪个分类?需要做的是把 [0.9,1.1] 与DataSet中的每个样本进行距离的比较,并选出前 k 个距离值最小的实例,在k个实例中,我们把出现次数最多的分类标签当作 [0.9,1.1] 的分类标签。
得出以下过程:
1.计算已知类别数据集中的点与当前点的距离
2.将数据集中的点按照距离递增排序
3.选取前k个与当前点距离最小的点
4.计算k个点所对应的标签的出现频率
5.返回前k个点中类别标签出现频率最高的标签作为当前点的类别
归一化数值
在我们用k近邻算法选取距离最近的点的时候,有时会碰到某种数据集,如
DataSet = [ [0.1,1100] , [0.7,110] , [1.2,0] , [0.2,10] ]
可以发现,数据集中每个实例的第二个值之间相差很大,这样我们在计算距离的时候,第二个值在决定结果上占了超大的比例,为了避免这种情况,我们在计算之前对数据进行归一化,对数据统一做如下处理:
然后再进行之后的计算。