KNN算法整理
----------------------------------------
-1. 用最相似的样本的目标属性的值来作为当前预测样本的目标属性值
-2. 分类(离散)、回归(连续)
分类:使用相似样本的多数类别作为预测样本的目标属性值
回归:将相似样本的y值的均值作为预测样本的目标属性值
-3.
a. 从训练数据中找回和预测样本最相似度的K个样本
b. 基于K个样本的目标属性的值产生预测样本的预测值
-4.
主要问题:当训练数据特别大的时候,找K个相似样本的数据按照原始的KNN方式需要每个样本均计算一次,计算量非常大,效率很低。
-5. KD_Tree
构建过程:
KDTree采用从m个样本的n维特征中,分别计算n个特征取值的方差,用方差最大的第K维特征作为根节点。对于这个特征选择取值的中位数划分,
小于该值划分为左子树,大于该值划分为右子树,对左右树同样的方式找最大方差作为根节点开始划分,递归产生KD树
KD_Tree的构建过程以及基于KD_Tree的相似样本的查询过程省略
-6. KNN伪代码流程:
1.# datas训练数据集,x是一个待预测的样本,k表示预测的时候获取k个邻居样本
# 1. 从datas中获取距离x最近的k个样本,距离公式为欧几里得距离:遍历样本,将最新的k个样本添加到集合中,
# 2. 从最近的K个样本中,产生预测值:k个样本中出现次数最多的就是预测值
-7.sklearn中KNN参数说明: