1为什么我们需要KNN

现在为止,我们都知道机器学习模型可以做出预测通过学习以往可以获得的数据.

因为KNN基于特征相似性,所以我们可以使用KNN分类器做分类.

2KNN是什么?

KNN K-近邻,是一种简单的机器学习算法,目前被广泛使用分类.KNN做分类基于基于与 将要分类的点 的邻居的类别.

KNN 存储所有可以获得的例子,并基于相似性的度量做出分类 (也就是说和仓库里的特征进行对比,谁相近 就判为哪一类.)
k在KNN中是一个参数,指的是在多数表决过程中要包括的最近的邻居的数量(这里的意思就是找的所要判别的最近邻居的数量,比如K=5,就么就找5个最近的邻居,这5个中那一个标签占多数,则可以判别出书属于哪一个标签)
(k in KNN is a parameter that refer to the number of nearest neighbors to include in the majority voting process)

3我们怎样选择K 参数?

KNN算法基于特征相似性:选择一个正确的K值是一个参数调优的过程,这对于获得一个更好的精度是非常重要的.
(KNN Algorithm is based on feature similarity:choosing the right value of k is a process called parameter tuning, and is important for better accuracy)
对于不同的K值,最终分类的结果可能是不同的,见下图的情况.当选择K=3时,新样本被判别为方框,但是当选择K=7时新样本被判别为三角形

所以我们应该怎样选择一个好的K值呢?一般有下面两个注意点

(1) 对所有数据点数目开平方得到的数作为K值。这里需要注意对谁开平方,我目前理解的是对训练的数据集数量开平方。

(2) 选择K的奇数值是为了避免两类数据之间的混淆。例如在本教程视频中附带的一个例子,对训练数据集开平方得12,409 ,但是作者为了取奇数,用12-1=11把11作为K值。

见下图:

4我们什么时候使用KNN

we can use knn when {date is labled;data is noise free ;data is small}
对于数据集小的解释是:because KNN is a lazy learner ,so doesn't learn a discriminative function from the traing set (因为KNN是一个懒惰的学习者,所以不会从训练集中学习判别函数.对于小的数据集,KNN 是非常好的
)

让我们通过计算来更清晰的理解欧式距离

5KNN是怎样工作的 ?

(1) 考虑一个数据集有两个变量:高度(cm)和重量(kg)并且数据集的每一个数据点被分类为正常和重量低的,基于给出的数据集,我们需要来分类一个数据点。怎样找到这个数据段最近的邻居呢? 考虑用欧式距离,那么什么是欧式距离呢?公式如下:



(2)然后,我们计算需要分类的 未知数据点的所有欧式距离显示在下表中。

(3)现在让我们以K=3 来计算出三个最近邻,因为这三个最近邻指示的标签都为Normal,所以待判别的数据点对应的类也是Normal

6 回顾KNN算法(recap the KNN)

KNN算法的回顾一共有4个点,分别为:
(1)指定一个正整数k和一个新样本。
(2)我们在数据库中选择最接近新样本的K个条目
(3)我们发现这些条目最常见的分类
(4)这是我们给新样品的分类
——————————分割线——————————
该视频的后面还讲述了一个使用KNN 算法进行预测糖尿病的实例,收录在我的博客中,如有兴趣,请到分类Python&Python_case查询。

机器学习算法-K-NN的学习 /ML 算法 (K-NEAREST NEIGHBORS ALGORITHM TUTORIAL)的更多相关文章

  1. 【机器学习笔记之一】深入浅出学习K-Means算法

    摘要:在数据挖掘中,K-Means算法是一种 cluster analysis 的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法. 在数据挖掘中,K-Means算法是一种c ...

  2. [机器学习系列] k-近邻算法(K–nearest neighbors)

    C++ with Machine Learning -K–nearest neighbors 我本想写C++与人工智能,但是转念一想,人工智能范围太大了,我根本介绍不完也没能力介绍完,所以还是取了他的 ...

  3. 机器学习算法总结(三)——集成学习(Adaboost、RandomForest)

    1.集成学习概述 集成学习算法可以说是现在最火爆的机器学习算法,参加过Kaggle比赛的同学应该都领略过集成算法的强大.集成算法本身不是一个单独的机器学习算法,而是通过将基于其他的机器学习算法构建多个 ...

  4. 机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记

    机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记 关键字:k-均值.kMeans.聚类.非监督学习作者:米仓山下时间: ...

  5. 机器学习--K近邻 (KNN)算法的原理及优缺点

    一.KNN算法原理 K近邻法(k-nearst neighbors,KNN)是一种很基本的机器学习方法. 它的基本思想是: 在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对 ...

  6. 机器学习实战python3 K近邻(KNN)算法实现

    台大机器技法跟基石都看完了,但是没有编程一直,现在打算结合周志华的<机器学习>,撸一遍机器学习实战, 原书是python2 的,但是本人感觉python3更好用一些,所以打算用python ...

  7. 吴裕雄 python 机器学习——集成学习AdaBoost算法回归模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...

  8. 吴裕雄 python 机器学习——集成学习AdaBoost算法分类模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...

  9. 机器学习之二:K-近邻(KNN)算法

    一.概述 K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中 ...

随机推荐

  1. Bootstrap 表单布局示例

    <html> <head> <link href="../../dist/css/bootstrap.min.css" rel="style ...

  2. sql server 计算属性,计算字段的用法与解析

    SQL学习之计算字段的用法与解析   一.计算字段 1.存储在数据库表中的数据一般不是应用程序所需要的格式.大多数情况下,数据表中的数据都需要进行二次处理.下面举几个例子. (1).我们需要一个字段同 ...

  3. 获取登录用户ip

    public static String getIpAddr(HttpServletRequest request) { String ipAddress = null; try { ipAddres ...

  4. 洛谷 P2038 无线网络发射器选址 题解

    每日一题 day9 打卡 Analysis 这道题是个模拟,两个0~128( 注意不是1~128 )的循环枚举正方形中心点,判断正方形的边界,再用循环枚举公共场所的数量就好了. 时间复杂度 < ...

  5. MySQL 事务 MVCC 版本链

      版本链   对于使用InnoDB存储引擎的表来说,它的聚簇索引记录中都包含两个必要的隐藏列(row_id并不是必要的,我们创建的表中有主键或者非NULL唯一键时都不会包含row_id列):  1) ...

  6. Pycharm 的常用快捷键

    pycharm常用快捷键 1.编辑(Editing) Ctrl + Space    基本的代码完成(类.方法.属性) Ctrl + Alt + Space  快速导入任意类 Ctrl + Shift ...

  7. sqlserver数据库查询语句

    --数据库所有表select * from sysobjects where type='u'; --指定表的所有列select name from syscolumns where id=(sele ...

  8. 初探nodejs事件循环机制event loop

    nodejs的特点 nodejs 具有事件驱动和非阻塞I/O的特点. 事件驱动是指nodejs把每一个任务当成事件来处理. 非阻塞I/O是指nodejs遇到I/O任务时,会从线程池调度单独的线程处理I ...

  9. js 检测链接是否有效(包含跨域)

    const checkUrl = function (url) { const promise = new Promise(function (resolve, reject) { if (!url) ...

  10. vim 操作命令大全(转)

    1. 关于Vim vim是我最喜欢的编辑器,也是Linux下第二强大的编辑器. 虽然emacs是公认的世界第一,我认为使用emacs并没有使用vi进行编辑来得高效. 如果是初学vi,运行一下vimtu ...