KNN(K近邻)

news/2024/12/23 3:53:51/

物以类聚,人以群分;近朱者赤,近墨者黑。这两句话的大概意思就是,你周围大部分朋友是什么人,那么你大概率也就是这种人,这句话其实也就是KNN算法的核心思想。

所谓的物以类聚,人以群分,我们需要量化样本之间的差距,我们先来看看几个公式

1,欧几里得距离
欧几里得距离是运用最广的一种计算距离的方式,我们从小在课本上接触到的也是这个东西,它衡量的是多维空间中两点之间的绝对距离,表达式如下:

2,明可夫斯基距离
明可夫斯基距离是一种对多种距离的概括性描述,其表达式如下 :

3,曼哈顿距离(Manhattan distance)
当p=1时,得到绝对值距离,也称曼哈顿距离,表达式如下:

4,切比雪夫距离(Chebyshev Distance)
当p->∞时,得到切比雪夫距离。表达式如下: 

二,算法原理

      如果一个样本在特征空间中的k个最相似的样本中属于某一类,则该样本也属于这个类别。KNN算法中,所选择的邻居都是分好类的

  

就假设我们的正方形,三角形都是已知的类别,从上图我们可以看到圆形这个最有可能的分类就是三角形了,当然这也可能是它伪装的太好了,我们已知的几个特征点都和三角形太相近了,这时我们可以搜集更多的特征点,去对未知类别分类。

由于KNN最邻近分类算法在分类决策时只依据最邻近的一个或者几个样本的类别来决定待分类样本所属的类别,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。

因此,k值的选择距离度量以及分类决策规则是k近邻算法的三个基本要素。

k近邻中的分类决策规则往往就是多数表决,既由输入实例的k个近邻的训练中的多数类决定输入类决定输入实例的类。

具体代码可以观看下面这篇博客

knn约会网站实例https://blog.csdn.net/gf_lvah/article/details/89355051?ops_request_misc=&request_id=&biz_id=102&utm_term=knn%E7%BA%A6%E4%BC%9A%E7%BD%91%E7%AB%99%20gf_lvah&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-89355051.142%5Ev9%5Epc_search_result_control_group,157%5Ev4%5Econtrol&spm=1018.2226.3001.4187

需要数据了,可以联系我 

我们知道KNN是基于距离的一个简单分类算法,熟悉KNN的都知道,我们要不断计算两个样本点之间的距离,但是,试想一下,如果数据量特别大的时候,我们要每个都计算一下,那样计算量是非常大的,所以提出了一种优化KNN的算法-----kd-tree.

实现k近邻法时,主要考虑的问题是如何对训练数据进行快速k近邻搜索。这在特征空间的维数大及训练数据容量大时尤其必要。k近邻法最简单的实现是线性扫描(穷举搜索),即要计算输入实例与每一个训练实例的距离。计算并存储好以后,再查找K近邻。当训练集很大时,计算非常耗时。为了提高kNN搜索的效率,可以考虑使用特殊的结构存储训练数据,以减小计算距离的次数。


kd树(K-dimension tree)是一种对k维空间中的实例点进行存储以便对其进行快速检索的树形数据结构。kd树是是一种二叉树,表示对k维空间的一个划分,构造kd树相当于不断地用垂直于坐标轴的超平面将K维空间切分,构成一系列的K维超矩形区域。kd树的每个结点对应于一个k维超矩形区域。利用kd树可以省去对大部分数据点的搜索,从而减少搜索的计算量。


http://www.ppmy.cn/news/162038.html

相关文章

KNN(k近邻详解)

KNN(k近邻详解) 详细链接一 详细链接二 一句话说明白KNN算法原理 下面我们只讲关于分类的KNN,回归的不讲。 其实很简单,就是计算你要预测的点的周围最近的K个点,然后取这k个点中最多的类定义为你要预测的这个点所属…

Kibana

Kibana Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作。您可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作。您可以很方便的利用图表、表格及地图对数据进行多元化的分析…

电子发票(PDF)识别信息提取(JAVA)电子专票(OFD)在线预览

网上也有资料,有的只有jar包没有源码,整理好网上的资源,把源码开放出来。 https://gitee.com/kanen/invoice 欢迎使用和交流。 内容介绍 电子发票(PDF)识别与验真 1、支持电子发票(PDF)的读取…

Conan

# 环境 ubuntu:bionic的docker image shell docker run -it ubuntu:bionic 预装工具 shell apt-get install cmake # 安装conan shell # pip3 install conan Collecting conan # conan -v Conan version 1.33.0 # 使用conan >官方文档:https://docs.conan.io/…

Koin

Dagger 的麻烦 如果还不清楚什么是依赖注入,那么请参考之前写的 Dagger2 in Android(一)通俗基础开头部分。如果你不了解 Dagger 倒也无妨,本文会进行一定的对比,但仅针对接触过 Dagger 的同学,否则大可以忽…

KNN(K近邻算法)

一、KNN基本知识 KNN算法 -------- 做分类(二分类、多分类)、也可以做回归KNN的三要素:K值的影响:1. K值过小,可能会导致过拟合2. K值过大,可能会导致欠拟合距离的计算方式:一般使…

KNN——K近邻

KNN(K-Nearest Neighbor)最邻近分类算法是数据挖掘分类(classification)技术中最简单的算法之一,其指导思想是”近朱者赤,近墨者黑“,即由你的邻居来推断出你的类别。 K近邻(KNN)分类器是有监督…

Kibana:Kibana Lens 入门

Elastic 在7.5的发行版中加入了一个重量级的发布,也就是Lens。在我之前的文章 “Elastic Stack 7.5.0 重磅发布” 有一些介绍。在今天的练习中,我将简单地介绍一下如何使用Elastic Lens来简化我们创建可视化。Kibana Lens 的特点: Lens 的设…