K近邻算法01---K-近邻算法简介、K近邻算法API使用、KD树

本文介绍了K-近邻(KNN)算法的基本概念及其在字符识别、文本分类等领域的应用,并通过一个案例展示了KNN算法的具体实现流程。此外,还讨论了如何利用KD树来提高KNN算法在大数据集上的搜索效率。

一、K-近邻算法简介

K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KNN算法是相对比较容易理解的算法

  • 定义:
    如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

  • 距离公式
    两个样本的距离可以通过如下公式计算,又叫欧式距离 。
    在这里插入图片描述

二、k近邻算法api初步使用

1.K-近邻算法API

  • sklearn.neighbors.KNeighborsClassifier(n_neighbors=5)
    • n_neighbors:int,可选(默认= 5),k_neighbors查询默认使用的邻居数

2.一个案例

(1)步骤分析

1.获取数据集
2.数据基本处理(该案例中省略)
3.特征工程(该案例中省略)
4.机器学习
5.模型评估(该案例中省略)

(2)代码过程

在这里插入图片描述

3.小结

  • 最近邻 (k-Nearest Neighbors,KNN) 算法是一种分类算法,
  • 1968年由 Cover 和 Hart 提出,应用场景有字符识别、文本分类、图像识别等领域。
  • 该算法的思想是:一个样本与数据集中的k个样本最相似,如果这k个样本中的大多数属于某一个类别.
  • 实现流程
    1)计算已知类别数据集中的点与当前点之间的距离
    2)按距离递增次序排序
    3)选取与当前点距离最小的k个点
    4)统计前k个点所在的类别出现的频率
    5)返回前k个点出现频率最高的类别作为当前点的预测分类

三、kd树

1.问题导入

问题导入:

实现k近邻法时,主要考虑的问题是如何对训练数据进行快速k近邻搜索。

这在特征空间的维数大及训练数据容量大时尤其必要。

k近邻法最简单的实现是线性扫描(穷举搜索),即要计算输入实例与每一个训练实例的距离。计算并存储好以后,再查找K近邻。 当训练集很大时,计算非常耗时。

为了提高kNN搜索的效率,可以考虑使用特殊的结构存储训练数据,以减小计算距离的次数

2.kd树简介

根据KNN每次需要预测一个点时,我们都需要计算训练数据集里每个点到这个点的距离,然后选出距离最近的k个点进行投票。当数据集很大时,这个计算成本非常高,针对N个样本,D个特征的数据集,其算法复杂度为O(DN^2)。

kd树:为了避免每次都重新计算一遍距离,算法会把距离信息保存在一棵树里,这样在计算之前从树里查询距离信息,尽量避免重新计算。其基本原理是,如果A和B距离很远,B和C距离很近,那么A和C的距离也很远。有了这个信息,就可以在合适的时候跳过距离远的点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值