1算法原理

KNN,全称k-NearestNeighbor。

算法的核心思想是:未标记样本的类别由距离其最近的K个邻居投票来决定。

可解决分类或者回归问题。由其思想可以看出,KNN是通过测量不同特征值之间的距离进行分类,而且在决策样本类别时,只参考样本周围k个“邻居”样本的所属类别。因此比较适合处理样本集存在较多重叠的场景,主要用于聚类分析、预测分析、文本分类、降维等,也常被认为是简单数据挖掘算法的分类技术之一。

2 算法的优缺点

优点:

①简单,易于理解,易于实现,无需参数估计,无需训练;

②精度高,对异常值不敏感(个别噪音数据对结果的影响不是很大);

③适合对稀有事件进行分类;

④特别适合于多分类问题(multi-modal,对象具有多个类别标签),KNN要比SVM表现要好.;

缺点:

①对测试样本分类时的计算量大,空间开销大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本;

②可解释性差,无法给出决策树那样的规则;(黑盒模型)

③最大的缺点是当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。该算法只计算“最近的”邻居样本,某一类的样本数量很大,那么或者这类样本并不接近目标样本,或者这类样本很靠近目标样本。无论怎样,数量并不能影响运行结果。可以采用权值的方法(和该样本距离小的邻居权值大)来改进;

④消极学习方法。

3 算法的代码

3.1算法的伪代码

如下:

Algorithm KNN(A[n], k)

{

Input: A[n]为N个训练样本的分类特征;

k为近邻个数;

Initialize:

选择A[1]至A[k]作为x的初始近邻;

计算初始近邻与测试样本x间的欧氏距离d(x, A[i]), i=1,2,...k;

按d(x, A[i])从小到大排序;

计算最远样本与x间的距离D,即max{d(x, A[j]) | j=1,2...k};

for(i=k+1; i<n+1; i++)

计算A[i]与x间的距离d(x, A[i]);

if (d(x, A[i]) < D ) then

用A[i]代替最远样本;

按照d(x, A[i])从小到大排序;

计算最远样本与x间的距离D,即max{d(x, A[j]) | j=1,...i};

计算前k个样本A[i]所属类别的概率,i=1,2,...k;

具有最大概率的类别即为样本x的类;

end for

Output: x所属的类别。

}

3.2 算法的代码

后续补充

3.3算法的包以及调参

from sklearn.model_selection import train_test_split feautre_train,feautre_test,label_train,label_test=train_test_split(feature,labels,test_size=0.2) # 指出训练集的标签和特征以及测试集的标签和特征,0.2为参数,对测试集以及训练集按照2:8进行划分 from sklearn.neighbors import KNeighborsClassifier model=KNeighborsClassifier(n_neighbors= 9)

4工程优化以及改进

1:采用Kd_TRee或者BALL_tree的数据结构来优化算法。在数据之间建立关联关系,然后查询关系,免去一一遍历的问题。

算法的复杂度从(DN**2)降低到(O(DNlogN))

2:算法策略的改进。

1:紧邻的规则的改进(增加点的权重,某个半径内的点)

2:距离阈值的测量(欧式距离,余弦距离,曼哈顿距离等)

总结:

标题

KNN 算法的原理以及理解相关推荐

  1. 一篇文彻底理解KNN算法 - 我点了一包华子,终于明白了海伦是个好女孩

    一篇文彻底理解KNN算法 - 我点了一包华子,终于明白了海伦是个好女孩 大家好,我是W 这次我们要手撕KNN,同时自己实现KNN.当然KNN的思想很简单,所以重点会放在实现自己的KNN上.K-近邻(K ...

  2. 详细的KNN算法原理步骤

    KNN算法原理详解 KNN算法 1.1 解决监督学习中分类问题的一般步骤 1.2 什么是消极(惰性)的学习方法 2 首先从一个实例讲起 3 KNN分类算法入门 3.1.1算法综述 3.1.2算法思想 ...

  3. 用Python实现KNN算法(从原理到代码的实现)

    用Python实现KNN算法(从原理到代码的实现) 环境 1.Pycharm 2.python3.6 声明:本栏的所有文章皆为本人学习时所做笔记而整理成篇,转载需授权且需注明文章来源,禁止商业用途,仅 ...

  4. Python实现kNN算法

    Python实现kNN算法 1. 原理 k-最近邻: kNN(k-NearestNeighbor)分类算法机器学习中最简单的分类方法之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用 ...

  5. 学习KNN算法重点目标

    1.简述一下KNN算法的原理 kNN算法称为K最近邻分类算法.所谓k最近邻,就是最接近K的数据,用他们的最大特征结果来表示. 该算法设计3个主要因素:分类决策规则,距离与相似的衡量,k大小. KNN做 ...

  6. 机器学习:KNN算法对鸢尾花进行分类

    机器学习:KNN算法对鸢尾花进行分类 1.KNN算法的理解: 1.算法概述 KNN(K-NearestNeighbor)算法经常用来解决分类与回归问题, KNN算法的原理可以总结为"近朱者赤 ...

  7. 机器学习与深度学习——通过knn算法分类鸢尾花数据集iris求出错误率并进行可视化

    什么是knn算法? KNN算法是一种基于实例的机器学习算法,其全称为K-最近邻算法(K-Nearest Neighbors Algorithm).它是一种简单但非常有效的分类和回归算法. 该算法的基本 ...

  8. KNN算法(K临近算法)及使用KNN算法实现手写数字0-9识别

    首先感谢博主倔强的小彬雅,本文使用的素材及部分代码来源其博文机器学习入门-用KNN实现手写数字图片识别(包含自己图片转化),需要下载素材的可以到其博文最后进行下载. 关于KNN算法 knn算法也叫K临 ...

  9. 机器学习实战——KNN算法预测电影类型

    预测电影类型 现有爱情片和动作片(不是爱情动作片,雾)的打斗场面和接吻场面的次数统计,然后给出一个电影打斗场面和接吻场面出现的次数,预测其类型. 那么如何预测呢?当然用KNN了. KNN算法的原理就是 ...

最新文章

  1. 遍历替换字符串中特定字符
  2. Error(s) in loading state_dict for ModelMain
  3. 【Python基础】使用Matplotlib可视化数据的5个强大技巧
  4. zabbix监控平台添加服务(http,nginx,mysql)
  5. cron 每天下午5点_下午5点30:沅江新沅路与琼湖路交叉路口...
  6. ODBC访问数据库(转载)
  7. JSP中用request.setAttribute()后,在action中为什么取不到值?
  8. HDFS简单的shell操作--大数据纪录片第二记
  9. js constructor 和 instanceof
  10. 进程间通信------共享内存
  11. serve注解是加在哪个类_PHP 8新特性之Attributes(注解)
  12. 【Unity3d】移动开发代码优化
  13. ios客户端学习-手机屏幕尺寸
  14. 区块链开发之智能合约设计模式
  15. 西瓜书学习笔记(2)——模型评估与选择
  16. ClickHouse压缩率
  17. 微信小程序_头像昵称填写
  18. 第四节 电路心法 基尔霍夫电压定律与电流定律
  19. Linux服务器cpu性能模式,linux cpu开启性能模式
  20. 陪玩MM谁是你的NO.1?Python获取陪玩MM照片颜值检测打分

热门文章

  1. 华为防火墙USG6000V---内网访问外网---外网访问内网服务器(NAT服务器)示例配置
  2. 存储 NAB 2019: Infortrend赢得Video Edge颁发的Future最佳表现奖
  3. 这都是什么和什么啊?
  4. 你真的了解闰年吗? (附区分 闰年平年的程序示例)
  5. 【Python监控CPU】一款超治愈的RunCat监控应用系统上线啦~爆赞,颜值拉满啊
  6. 装了火绒无法安装其他软件的解决方案
  7. 戴尔服务器系列区别,拆解戴尔服务器,看看内部构造与普通计算机的区别
  8. 对Servlet生命周期的简单理解
  9. 2019BDCI互联网金融新实体发现 | 思路与代码框架分享(单模第一,综合第二)...
  10. 木偶然-2010.7.7