KNN算法的概念比较好理解,简单总结:
1.距离概念
闵可夫斯基距离:
当p =1时,为曼哈顿距离
曼哈顿距离为平面x1点做关于y的垂线,x2做关于x的垂线,取使两点连通部分。d(i,j)=|X1-X2|+|Y1-Y2|
当p =2时,为欧式距离
欧式距离为点到点的最短距离
2.kd_tree
如果判断一个点到平面内点的距离:
1。可以选择遍历到所有点的距离
2。可以采用kd_tree
kd_tree思想:
在同一个平面(维度)把所有点尽可能的分成同样数量的两个部分,无线切分,直到不能切分为止。这样以切分的那条线作为索引,把分割线作为中间结点,图中的点作为叶子结点,可以的到一课树状结构。这样,就很容易找到一个点附近的k个点。比如,随机在图中出现一个点,我们可以快速的确定这个点和哪个叶子结点出现在同一个区间,然后来计算新出现的点和叶子结点的距离,以这个距离为半径,可以轻松得到与哪一个中间结点更近,更快的找到附近更近的叶子节点。
KNN算法优