什么是KNN
KNN又叫做K邻近,即K nearst neighbors,属于分类任务
算法思想:
用待测样本较近的几个样本来代表待测样本
KNN三要素
K值的选择:
K值较大容易欠拟合,K值较小容易过拟合,可以通过交叉验证来选取一个较好的值
距离的度量:
一般选用欧几里得距离
决策的规则:
在分类时选用多数表决法或者加权的多数表决法
在做回归时使用的是平均值法或者加权的平均值法
一般权重和距离成反比
KNN算法的实现方式
蛮力实现(brute)
计算待测样本到所i有训练集样本的距离,然后选取K个最近的
KD-Tree实现:
选取训练样本方差最大的特征作为根节点,以中位数二分样本,同理左右子树再按方差最大的特征二分下去,不断递归产生KD-Tree
首先在找到包含目标点的叶子节点,然后再看看父节点的另一个叶子节点,然后返回父节点的父节点,去另一个分支看看,最后找到K个临近点。
KNN的API
KNeighborsClassifier()
KNeighborsRegressor()