ML之kNN:k最近邻kNN算法的简介、应用、经典案例之详细攻略(一)

简介: ML之kNN:k最近邻kNN算法的简介、应用、经典案例之详细攻略

目录


kNN算法的简介


1、kNN思路过程


1.1、k的意义


1.2、kNN求最近距离案例解释原理—通过实际案例,探究kNN思路过程


2、K 近邻算法的三要素


k最近邻kNN算法的应用


1、kNN代码解读


k最近邻kNN算法的经典案例


1、基础案例




kNN算法的简介


     邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。


     kNN算法的核心思想:如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。


该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 kNN方法在类别决策时,只与极少量的相邻样本有关。

由于kNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,kNN方法较其他方法更为适合。

image.png


     kNN算法不仅可以用于分类,还可以用于回归。通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。如下图是kNN算法中,k等于不同值时的算法分类结果。

     简单来说,kNN可以看成:有那么一堆你已经知道分类的数据,然后当一个新数据进入的时候,就开始跟训练数据里的每个点求距离,然后选择离这个训练数据最近的k个点,看看这几个点属于什么类型,然后用少数服从多数的原则,给新数据归类。


1、kNN思路过程


1.1、k的意义


image.png



1.2、kNN求最近距离案例解释原理—通过实际案例,探究kNN思路过程


  共有22图片→label属于[0,21],每一个label对应一个长度距离,最后预测encodings中,一张图片中的两个目标


image.png

knn_clf.kneighbors())

(array([[0.30532235, 0.31116033],

      [0.32661427, 0.33672689],

      [0.23773344, 0.32330168],

      [0.23773344, 0.31498658],

      [0.33672689, 0.33821827],

      [0.38318684, 0.40261368],

      [0.36961207, 0.37032072],

      [0.30532235, 0.32875857],

      [0.31116033, 0.31498658],

      [0.34639613, 0.37008633],

      [0.34639613, 0.38417308],

      [0.38043224, 0.40495343],

      [0.37008633, 0.38417308],

      [0.36410526, 0.38557585],

      [0.40495343, 0.42797409],

      [0.36410526, 0.40118199],

      [0.31723113, 0.340506  ],

      [0.37033616, 0.37823567],

      [0.32446263, 0.33810974],

      [0.31723113, 0.32446263],

      [0.33810974, 0.37878755],

      [0.340506  , 0.3755613 ]]),

array([[ 7,  8],

      [ 0,  4],

      [ 3,  8],

      [ 2,  8],

      [ 1,  3],

      [ 1,  8],

      [ 4,  7],

      [ 0,  8],

      [ 0,  3],

      [10, 12],

      [ 9, 12],

      [ 9, 14],

      [ 9, 10],

      [15,  9],

      [11, 10],

      [13, 12],

      [19, 21],

      [19, 21],

      [19, 20],

      [16, 18],

      [18, 16],

      [16, 19]], dtype=int64))

knn_clf.kneighbors(encodings, n_neighbors=1)

(array([[0.33233257],[0.31491284]]),

array([[20],[12]], dtype=int64))

 


相关文章
|
18小时前
|
机器学习/深度学习 算法
应用规则学习算法识别有毒的蘑菇
应用规则学习算法识别有毒的蘑菇
|
2天前
|
算法 关系型数据库 C语言
卡尔曼滤波简介+ 算法实现代码(转)
卡尔曼滤波简介+ 算法实现代码(转)
13 4
|
3天前
|
机器学习/深度学习 自然语言处理 算法
深度学习算法简介(二)
深度学习算法简介(二)
|
3天前
|
机器学习/深度学习 自然语言处理 算法
深度学习算法简介(一)
深度学习算法简介(一)
|
5天前
|
存储 机器学习/深度学习 算法
R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例
R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例
|
5天前
|
数据采集 机器学习/深度学习 算法
数据分享|WEKA关联规则挖掘Apriori算法在学生就业数据中的应用
数据分享|WEKA关联规则挖掘Apriori算法在学生就业数据中的应用
|
9天前
|
机器学习/深度学习 自然语言处理 算法
机器学习算法原理与应用:深入探索与实战
【5月更文挑战第2天】本文深入探讨机器学习算法原理,包括监督学习(如线性回归、SVM、神经网络)、非监督学习(聚类、PCA)和强化学习。通过案例展示了机器学习在图像识别(CNN)、自然语言处理(RNN/LSTM)和推荐系统(协同过滤)的应用。随着技术发展,机器学习正广泛影响各领域,但也带来隐私和算法偏见问题,需关注解决。
|
11天前
|
机器学习/深度学习 算法 C语言
【C言专栏】递归算法在 C 语言中的应用
【4月更文挑战第30天】本文介绍了递归算法在C语言中的应用,包括基本概念(通过调用自身解决子问题)、特点(调用自身、终止条件、栈空间)和实现步骤(定义递归函数、分解问题、设置终止条件、组合解)。文中通过阶乘计算和斐波那契数列两个案例展示了递归的使用,强调了递归可能导致的栈溢出问题及优化需求。学习递归有助于理解和应用“分而治之”策略。
|
1天前
|
算法 数据安全/隐私保护 计算机视觉
基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真
该内容包括一个算法的运行展示和详细步骤,使用了MATLAB2022a。算法涉及水印嵌入和提取,利用LAB色彩空间可能用于隐藏水印。水印通过二维CS-SCHT变换、低频系数处理和特定解码策略来提取。代码段展示了水印置乱、图像处理(如噪声、旋转、剪切等攻击)以及水印的逆置乱和提取过程。最后,计算并保存了比特率,用于评估水印的稳健性。
|
2天前
|
存储 算法 数据可视化
基于harris角点和RANSAC算法的图像拼接matlab仿真
本文介绍了使用MATLAB2022a进行图像拼接的流程,涉及Harris角点检测和RANSAC算法。Harris角点检测寻找图像中局部曲率变化显著的点,RANSAC则用于排除噪声和异常点,找到最佳匹配。核心程序包括自定义的Harris角点计算函数,RANSAC参数设置,以及匹配点的可视化和仿射变换矩阵计算,最终生成全景图像。