k近邻算法

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] ] 

可以发现,数据集中每个实例的第二个值之间相差很大,这样我们在计算距离的时候,第二个值在决定结果上占了超大的比例,为了避免这种情况,我们在计算之前对数据进行归一化,对数据统一做如下处理:

                                              

然后再进行之后的计算。

你可能感兴趣的:(k近邻算法)