K-Nearest Neighbors Algorithm
K近邻算法。
KNN算法非常简单,非常有效。KNN算法适合样本较少典型性较好的样本集。
KNN的模型表示是整个训练数据集。也可以说是:KNN的特点是完全跟着数据走,没有数学模型可言。
对一个新的数据点进行了预测,通过对K个最类似的实例(邻居)的整个训练集进行搜索,并对这些K实例的输出变量进行汇总。对于回归问题,这可能是平均输出变量,用于分类问题,这可能是模式(或最常见的)类值。
诀窍在于如何确定数据实例之间的相似性。如果你的属性都是相同的比例(例如英寸),最简单的方法就是使用Euclidean距离,你可以根据每个输入变量之间的差异直接计算一个数字。
KNN可能需要大量的内存或空间来存储所有数据,但只在需要时执行计算(或学习),及时进行预测。你也可以更新和管理你的训练实例,以保持预测的准确性。
距离或接近的概念可以在非常高的维度(大量的输入变量)中分解,这会对算法在你的问题上的性能产生负面影响。这被称为维度诅咒。它也暗示了你应该只使用那些与预测输出变量最相关的输入变量。
适用情景:
- 需要一个特别容易解释的模型的时候。
- 比如需要向用户解释原因的推荐算法。
优点:
1.简单好用,容易理解,精度高,理论成熟,既可以用来做分类也可以用来做回归;
2.可用于数值型数据和离散型数据;
3.训练时间复杂度为O(n);无数据输入假定;
4.对异常值不敏感
缺点:
1.计算复杂性高;空间复杂性高;
2.样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少);
3.一般数值很大的时候不用这个,计算量太大。但是单个样本又不能太少 否则容易发生误分。
4.最大的缺点是无法给出数据的内在含义。
K-Nearest Neighbors Algorithm的更多相关文章
- [机器学习系列] k-近邻算法(K–nearest neighbors)
C++ with Machine Learning -K–nearest neighbors 我本想写C++与人工智能,但是转念一想,人工智能范围太大了,我根本介绍不完也没能力介绍完,所以还是取了他的 ...
- 学习笔记之k-nearest neighbors algorithm (k-NN)
k-nearest neighbors algorithm - Wikipedia https://en.wikipedia.org/wiki/K-nearest_neighbors_algorith ...
- 机器学习算法-K-NN的学习 /ML 算法 (K-NEAREST NEIGHBORS ALGORITHM TUTORIAL)
1为什么我们需要KNN 现在为止,我们都知道机器学习模型可以做出预测通过学习以往可以获得的数据. 因为KNN基于特征相似性,所以我们可以使用KNN分类器做分类. 2KNN是什么? KNN K-近邻,是 ...
- 快速近似最近邻搜索库 FLANN - Fast Library for Approximate Nearest Neighbors
What is FLANN? FLANN is a library for performing fast approximate nearest neighbor searches in high ...
- K Nearest Neighbor 算法
文章出处:http://coolshell.cn/articles/8052.html K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KN ...
- K NEAREST NEIGHBOR 算法(knn)
K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KNN算法是相对比较容易理解的算法.其中的K表示最接近自己的K个数据样本.KNN算法和K-M ...
- [Algorithms] Classify Mystery Items with the K-Nearest Neighbors Algorithm in JavaScript
The k-nearest neighbors algorithm is used for classification of unknown items and involves calculati ...
- 2 kNN-K-Nearest Neighbors algorithm k邻近算法(一)
给定训练数据样本和标签,对于某测试的一个样本数据,选择距离其最近的k个训练样本,这k个训练样本中所属类别最多的类即为该测试样本的预测标签.简称kNN.通常k是不大于20的整数,这里的距离一般是欧式距离 ...
- 2 kNN-K-Nearest Neighbors algorithm k邻近算法(二)
2.3 示例:手写识别系统 2.3 .1 准备数据:将图像转换为测试向量 训练样本:trainingDigits 2000个例子,每个数字大约200个样本 测试数据:testDigits 大约900个 ...
- Approximate Nearest Neighbors.接近最近邻搜索
(一):次优最近邻:http://en.wikipedia.org/wiki/Nearest_neighbor_search 有少量修改:如有疑问,请看链接原文.....1.Survey:Neares ...
随机推荐
- 2019-6-28笔记总结-编程语言发展史和python安装
一.编程语言的发展史 1.机器语言(就是010101的二进制数,直接用二进制跟计算机直接沟通交流,直接操作硬件) 优点:计算机能够直接读懂,速度快 缺点:开发效率极低 2.汇编语言(用简单的英文标签来 ...
- Linux node.js安装
1.下载地址 下载node 英文网址:https://nodejs.org/en/download/ 中文网址:http://nodejs.cn/download/ 2.下载下来的tar文件上传到服务 ...
- 数据采集,SCADA, 使用MQTT的方式来进行消息单/双向传输,什么场景使用MQTT
1.先来了解下: 看完得出关键字:发布.订阅模式,事件驱动,主题,生产与消费解耦 2.轻量级 普通的socket连接对服务器的消耗太大了,socket服务端是很消耗资源的,一台服务器能链接的客户端是有 ...
- Linux磁盘设备基础
free -m 查看系统内存 [root@zhang /]# free -m total used free shared buffers cached ...
- Array : 数组的常用方法
数组常用方法 对象通用方法 1.toLocalString() 数组中的每个元素都会调用toLocalString(),然后以逗号隔开, 拼接为字符串: 2.toString() 数组中的每个元素都 ...
- C# vb .net实现像素化效果滤镜打马赛克
在.net中,如何简单快捷地实现Photoshop滤镜组中的像素化效果打马赛克呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授 ...
- ES6--Promise讲解
相信凡是写过javascript的童鞋也一定都写过回调方法(callback),简单说回调方法就是将一个方法func2作为参数传入另一个方法func1中,当func1执行到某一步或者满足某种条件的时候 ...
- Dockerfile 基本命令
1. 前言 Dockerfile 是用来构建自定义 Docker 镜像的文本文档.我们通过docker build 命令用于从Dockerfile 文件构建镜像.如果你要构建自定义镜像,Dockerf ...
- idea 启动项目报错,more than one fragment with the name [spring web] was found
这是由于idea导入项目的时候有多个模块,并且有多个web.xml导致的,先删除对应的模块,后启动即可. 另外也有可能是spring的jar冲突,把冲突的jar删除即可.
- Linux指令(时间日期类)
date指令-显示当前日期 基本语法: 1)date (功能描述:显示当前时间) 2)date +%Y (功能描述:显示当前年份) 3)date +%m (功能描述:显示当前月份) 4)date +% ...