K-近邻算法(K-NN)
邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。
kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 kNN方法在类别决策时,只与极少量的相邻样本有关。由于kNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,kNN方法较其他方法更为适合。
KNN是通过测量不同特征值之间的距离进行分类。它的的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。K通常是不大于20的整数。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。

  下面通过一个简单的例子说明一下:如下图,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5,由于蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类。

由此也说明了KNN算法的结果很大程度取决于K的选择

  在KNN中,通过计算对象间距离来作为各个对象之间的非相似性指标,避免了对象之间的匹配问题,在这里距离一般使用欧氏距离或曼哈顿距离:

同时,KNN通过依据k个对象中占优的类别进行决策,而不是单一的对象类别决策。这两点就是KNN算法的优势。

接下来对KNN算法的思想总结一下:就是在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对应的特征进行相互比较,找到训练集中与之最为相似的前K个数据,则该测试数据对应的类别就是K个数据中出现次数最多的那个分类,其算法的描述为:

1)计算测试数据与各个训练数据之间的距离;

2)按照距离的递增关系进行排序;

3)选取距离最小的K个点;

4)确定前K个点所在类别的出现频率;

5)返回前K个点中出现频率最高的类别作为测试数据的预测分类

缺点:

1)没有建立模型,测试样本和预测样本都要与所有的训练样本比较,当训练集合测试集数据规模很大时,计算量会很大;

2)K近邻并不能给出一个可以理解的模型,不生成模型。

注意:计算样本与样本之间的相似度(或者距离)。由于样本的类别是由K近邻中最经常出现的类别决定的,注意K 的取值问题。注意 k=1 的情况下并不能足以决定测试样本的类别,因为数据有噪声和异常值(outliers)。需要多一些的近邻集合来准确的决定类别。

参考博客:

  http://blog.csdn.net/c406495762/article/details/75172850--------------------------Python3《机器学习实战》学习笔记(一):k-近邻算法(史诗级干货长文)

  https://www.cnblogs.com/ybjourney/p/4702562.html

  《Web数据挖掘》(第二版)  Bing Liu 著 俞勇等译 -------------------------------(第三章 监督学习 3.9节 k-近邻学习)

转载于:https://www.cnblogs.com/zerozs/p/8214744.html

K-近邻(KNN)算法相关推荐

  1. 机器学习经典算法具体解释及Python实现--K近邻(KNN)算法

    (一)KNN依旧是一种监督学习算法 KNN(K Nearest Neighbors,K近邻 )算法是机器学习全部算法中理论最简单.最好理解的.KNN是一种基于实例的学习,通过计算新数据与训练数据特征值 ...

  2. Python+OpenCV:理解k近邻(kNN)算法(k-Nearest Neighbour (kNN) algorithm)

    Python+OpenCV:理解k近邻(kNN)算法(k-Nearest Neighbour (kNN) algorithm) 理论 kNN is one of the simplest classi ...

  3. k近邻算法_K近邻(knn)算法是如何完成分类的?

    摘要:K近邻算法是机器学习中的一个非常基础的算法.本文通过自生成数据,通过绘图的方式演示KNN算法的思路,让你不看数学公式就看了解什么是KNN算法. 关键词:KNN算法 1 生成一个二分类的数据集 本 ...

  4. 机器学习算法(7)——K近邻(KNN)、K-means、模糊c-均值聚类、DBSCAN与层次与谱聚类算法

    1.K-近邻算法(KNN)概述 (有监督算法,分类算法) 最简单最初级的分类器是将全部的训练数据所对应的类别都记录下来,当测试对象的属性和某个训练对象的属性完全匹配时,便可以对其进行分类.但是怎么可能 ...

  5. 【Python-ML】SKlearn库K近邻(KNN) 使用

    # -*- coding: utf-8 -*- ''' Created on 2018年1月15日 @author: Jason.F @summary: Scikit-Learn库K近邻分类算法 '' ...

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

    ML之kNN:k最近邻kNN算法的简介.应用.经典案例之详细攻略 目录 kNN算法的简介 1.kNN思路过程 1.1.k的意义 1.2.kNN求最近距离案例解释原理-通过实际案例,探究kNN思路过程 ...

  7. 机器学习——K近邻分类算法及python代码实现

    <机器学习:公式推导与代码实践>鲁伟著读书笔记. K近邻(K-nearest neighbor,K-NN)算法是一种经典的监督学习的分类方法.K近邻算法是依据新样本与k个与其相邻最近的样本 ...

  8. 机器学习100天(三十):030 K近邻分类算法-K值的选择

    机器学习100天,今天讲的是:K近邻分类算法-K值的选择. <机器学习100天>完整目录:目录 上一节我们讲了 K 折交叉验证的理论,下面我们将 K 折交叉验证算法应用到 K 近邻分类算法 ...

  9. 【机器学习经典算法】K近邻(KNN):核心与总结

    文章目录 1. 初识K近邻 2. 相知 2.1 K近邻三要素 2.2 KD树 2.2.1 kd树的构建 2.2.2 kd树的搜索 3. 总结 1. 初识K近邻 K-近邻(K-Nearest Neigh ...

  10. K近邻法算法(KNN)及其R实现

    1. K近邻算法 输入:训练数据集 T={(x1,y1),(x2,y2),⋯,(xN,yN)} T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\} 其中, xi∈χ⊆ ...

最新文章

  1. 一文读懂2019年IT及大数据行业趋势
  2. 电商平台 高并发 微服务 方案_Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战...
  3. 送计算机教授教师节礼物,教师节送教授什么礼物好
  4. php如何开发网络电话,利用开源软件30分钟搭建自己的voip网络电话系统V1.1
  5. 学习哪一款EDA软件画PCB电路板比较好?AD、PADS与Allegro的比较
  6. latex 在线表格编辑器
  7. rhel配置DNS分析+实验
  8. HNU2022夏季小学期大数据并行处理MapReduce任务
  9. D3.js v5.0 旭日图
  10. Pytorch C++/CUDA Extension
  11. C#读取写入excel单元格
  12. python 老照片修复软件_这款开源的 Python 老照片修复工具火了
  13. 最好的嵌入式开发板是哪个?
  14. 5G尚未完全覆盖,运营商开始采取措施降低5G投资
  15. Cesium 自定义Material 系列 (十五)
  16. Java单例模式(饿汉式和懒汉式)代码
  17. mysql查询出现In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated c
  18. 分块算法:莫队(持续更新)
  19. 大牛的《深度学习》笔记,Deep Learning速成教程
  20. SPSS for Mac 26 岭回归及语法(含 include 安装路径)

热门文章

  1. 服务器发送退出状态127,WebDriverException:消息:服务chromedriver意外退出。状态代码为:127...
  2. mysql 自动化运维工具_MySQL使用工具Inception实现自动化运维
  3. RocketMQ NameServer网络通信架构(基于Netty)
  4. Worker启动Executor源码
  5. (0006) iOS 开发之JavaScriptCore 实现UIWebView和HTML的交互
  6. 用jk触发器构成二分频电路_实例分析,轻松掌握声控照明电路
  7. 东芝3005您的机器需要保养_两联供之东芝中央空调天氟地水详细讲解
  8. php图形图像处理技术
  9. Java编程之前的复习和练习
  10. 深度学习要点———神经网络的类型