机器学习(二)

k近邻算法

在这里插入图片描述
KNN算法流程:

  1. 计算已知类别数据集中的点与当前点之间的距离。
  2. 按距离递增次序排序。
  3. 选取与当前点距离最小的k个点。
  4. 统计前k个点所在的类别出现的概率。
  5. 返回前k个点出现频率最高的类别作为当前点的预测分类。

k近邻算法api

import sklearn
sklearn.neighbors.KNeighborsClassifier(n_neighbors = s)
>>>	n_neighbors:int,默认 = 5,表示查询默认使用的邻居数

在这里插入图片描述

距离度量

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

K值的选择

  • K值过小:容易受到异常点的影响,容易过拟合
  • K值过大:受到样本均衡的问题,容易欠拟合
    在这里插入图片描述

kd树

k近邻法最简单的实现是线性扫描(穷举搜索),即要计算输入实例与每一个训练实例的距离,计算并存储好以后,再查找k近邻,当训练集很大时,计算非常耗时。
为了提高KNN搜索效率,可以使用kd树训练数据,以减少计算距离的次数。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

kd树搜索实现

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
kd树搜索过程:

  1. 二叉树搜索比较待查询节点和分裂节点的分裂维的值。(小于等于就进入左子树分支,大于就进入右子树分支知道叶子节点)
  2. 顺着搜索路径找到最近邻的近似点。
  3. 回溯搜索路径,并判断搜索路径上的节点的其他子节点空间中是否可能有距离查询点更近的数据点,如果有可能,则需要跳到其他子节点空间中探索。
  4. 重复这个过程直到搜索路径为空。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值