Scikit Learn - K 最近邻 (KNN)


本章将帮助您理解 Sklearn 中的最近邻方法。

基于邻居的学习方法有监督无监督两种类型。基于邻居的监督学习可用于分类和回归预测问题,但它主要用于工业中的分类预测问题。

基于邻居的学习方法没有专门的训练阶段,并且在分类时使用所有数据进行训练。它也不假设任何有关基础数据的信息。这就是它们本质上是懒惰和非参数的原因。

最近邻方法背后的主要原理是 -

  • 查找距离新数据点最近的预定义数量的训练样本

  • 从这些数量的训练样本中预测标签。

这里,样本的数量可以是用户定义的常数,如在 K 最近邻学习中,或者根据点的局部密度而变化,如在基于半径的邻域学习中。

sklearn.neighbors 模块

Scikit-learn 具有sklearn.neighbors模块,该模块为无监督和有监督的基于邻居的学习方法提供功能。作为输入,该模块中的类可以处理 NumPy 数组或scipy.sparse矩阵。

算法类型

可在基于邻居的方法的实现中使用的不同类型的算法如下 -

暴力破解

对数据集中所有点对之间的距离进行强力计算提供了最简单的邻居搜索实现。从数学上来说,对于 D 维度的 N 个样本,暴力方法的尺度为0[DN 2 ]

对于小数据样本,该算法可能非常有用,但随着样本数量的增加,它变得不可行。可以通过编写关键字algorithm='brute'来启用暴力邻居搜索。

KD树

KD 树数据结构是为了解决暴力方法计算效率低下的问题而发明的一种基于树的数据结构。基本上,KD树是一种二叉树结构,称为K维树。它通过将参数空间划分为填充数据点的嵌套正交区域,沿数据轴递归地划分参数空间。

优点

以下是 KD 树算法的一些优点 -

构建速度快- 由于分区仅沿数据轴执行,因此 KD 树的构建速度非常快。

更少的距离计算- 该算法需要非常少的距离计算来确定查询点的最近邻居。只需要