最近事情无比之多,换了工作、组队参加了一个比赛、和朋友搞了一些小项目,公号荒废许久。坚持是多么重要,又是多么艰难,目前事情都告一段落,我们继续100天搞定机器学习系列。想要继续做这个是因为,一方面在具体应用中,发现很多之前遗漏的点,可以在这里查漏补缺,巩固知识点。另一方面,也是想大家一起打卡学习,一起探讨。
那么,继续学习。 
 

 
本算法很简单,day7,原文作者仅简单介绍了kNN算法。
 
01k-NN算法
 
K最近邻(k-Nearest Neighbor,KNN)是数据挖掘分类技术中最简单的方法之一,是机器学习中唯一一个不需要训练过程的算法。K最近邻,即每个样本都可以用它最近的k个邻居代表。核心思想是如果两个样本的特征足够相似,它们就有更高的概率属于同一个类别,并具有这个类别上样本的特性。比较通俗的说法就是“近朱者赤近墨者黑”。
 
优点是简单,易于理解,易于实现,无需估计参数,无需训练;适合对稀有事件进行分类;特别适合于多分类问题, kNN比SVM的表现要好。
 
缺点是算法复杂度高,每一个待分类的样本都要计算它到全体已知样本的距离,效率较低;预测结果不具有可解释性,无法给出像决策树那样的规则;
 
02KNN如何工作?
 
kNN算法的过程如下:
1、选择一种距离计算方式, 通过数据所有的特征计算新数据与已知类别数据集中数据点的距离;
2、按照距离递增次序进行排序, 选取与当前距离最小的 k 个点;
3、对于离散分类, 返回 k 个点出现频率最多的类别作为预测分类; 对于回归, 返回 k 个点的加权值作为预测值。
 
 
 
 
如上图中,对灰色圆点进行分类,划分其属于绿、黄、红何种类型。首先需要计算灰点和近邻电之间的距离,确定其k近邻点,使用周边数量最多的最近邻点类标签确定对象类标签,本例中,灰色圆点被划分为黄色类别。
 
03几种距离
 
距离越近,表示越相似。距离的选择有很多,通常情况下,对于连续变量, 选取欧氏距离作为距离度量; 对于文本分类这种非连续变量, 选取汉明距离来作为度量. 通常如果运用一些特殊的算法来作为计算度量, 可以显著提高 K 近邻算法的分类精度,如运用大边缘最近邻法或者近邻成分分析法。
 
欧氏距离
 
 
 
切比雪夫距离
 
 
马氏距离
 
 
夹角余弦距离
 
 
切比雪夫距离
 
 
曼哈顿(Manhattan)距离
 
 
关于这些距离细节,大家可以移步:
https://blog.csdn.net/Kevin_cc98/article/details/73742037
https://blog.csdn.net/wyqwilliam/article/details/81676785
 
04K值
k值是可以直接影响预测结果的自定义常数。k值选择太小,邻居就会过少,易受噪声数据干扰,导致分类精度较低。k值选择太大,易蒋不相似数据包含进来,造成噪声增加,分类效果不佳。比较常用的是使用交叉验证误差统计选择法,比较不同K值时的交叉验证平均误差率, 选择误差率最小的那个K值. 例如选择K=1, 2, 3, ... , 对每个K = i 做100次交叉验证, 计算出平均误差, 通过比较选出误差最小的那个。
 
参考文献:
https://baike.baidu.com/item/%E9%82%BB%E8%BF%91%E7%AE%97%E6%B3%95/1151153?fr=aladdin
https://www.cnblogs.com/lijingchn/p/5398483.html
https://wenku.baidu.com/view/d84cf670a5e9856a561260ce.html

100天搞定机器学习|Day7 K-NN的更多相关文章

  1. 100天搞定机器学习|day44 k均值聚类数学推导与python实现

    [如何正确使用「K均值聚类」? 1.k均值聚类模型 给定样本,每个样本都是m为特征向量,模型目标是将n个样本分到k个不停的类或簇中,每个样本到其所属类的中心的距离最小,每个样本只能属于一个类.用C表示 ...

  2. 100天搞定机器学习|Day11 实现KNN

    机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机器学习|D ...

  3. 100天搞定机器学习|Day8 逻辑回归的数学原理

    机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机器学习|D ...

  4. 100天搞定机器学习|Day16 通过内核技巧实现SVM

    前情回顾 机器学习100天|Day1数据预处理100天搞定机器学习|Day2简单线性回归分析100天搞定机器学习|Day3多元线性回归100天搞定机器学习|Day4-6 逻辑回归100天搞定机器学习| ...

  5. 100天搞定机器学习|Day22 机器为什么能学习?

    前情回顾 机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机 ...

  6. 100天搞定机器学习|Day9-12 支持向量机

    机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机器学习|D ...

  7. 100天搞定机器学习|Day17-18 神奇的逻辑回归

    前情回顾 机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机 ...

  8. 100天搞定机器学习|Day19-20 加州理工学院公开课:机器学习与数据挖掘

    前情回顾 机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机 ...

  9. 100天搞定机器学习|Day21 Beautiful Soup

    前情回顾 机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机 ...

随机推荐

  1. cefsharp 与webbrowser简单对比概述

    原文:cefsharp 与webbrowser简单对比概述 有个项目需要做个简单浏览器,从网上了解到几个相关的组件有winform自带的IE内核的WebBrowser,有第三方组件谷歌内核的webki ...

  2. 虚拟机安装的kali无法识别本机物联网卡

    http://blog.csdn.net/sb985/article/details/76427624

  3. java中==和equels的区别

    起初接触java的时候这个问题还是比较迷茫的,最近上班之余刷博客的时候看了一些大神写的文章,自己也来总结一下,直接贴代码: package string; public class demo1 { p ...

  4. 2018-4-25-- 2.在sublime3里安装git插件并连接GitHub

    1.配置全局参数 Git的主要配置包括用户名.邮箱的设置.以及生成SSH密钥公钥等. 首先运行一下的命令设置git提交代码时自己的用户信息. 2.在sublime3里使用时需要配置push.defau ...

  5. iOS-HTTP浅析

    HTTP原理 什么是URL URL中常见的几种协议 什么是HTTP协议 HTTP是做什么的 为什么要使用HTTP协议 HTPP协议的通信过程介绍 HTTP请求 HTTP响应 HTTP请求的选择 两种发 ...

  6. Visual Studio查找中文的正则表达式

    原文: Visual Studio查找中文的正则表达式 经常有这样的需求:项目代码中有一些输出信息是中文写的,不过现在要做国际化,代码""中写的中文都要改成英文.这样就需要将代码中 ...

  7. GIS基础软件及操作(五)

    原文 GIS基础软件及操作(五) 练习五.空间分析的基本操作 空间分析的基本操作 空间分析模块 空间分析是基于地理对象的位置和形态的空间数据的分析技术,其目的在于提取和传输空间信息.空间分析是地理信息 ...

  8. ArcGIS for Desktop入门教程_第二章_Desktop简介 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第二章_Desktop简介 - ArcGIS知乎-新一代ArcGIS问答社区 1 Desktop简介 1.1 ArcGIS for Desktop ...

  9. 零元学Expression Blend 4 - Chapter 3 熟悉操作第一步(制作一个猴子脸)

    原文:零元学Expression Blend 4 - Chapter 3 熟悉操作第一步(制作一个猴子脸) 本篇内容会教你如何使用笔刷.钢笔.渐层以及透明度的调整,还有如何转化图层和路径,最重要的是要 ...

  10. MIPS开发板的“不二”选择——Creator Ci20单板计算机评测(芯片是君正JZ4780 ,也就是MIPS R3000,系统推荐Debian或深度,官网就有,其它语言有FreePascal和Go和Java和Python)

    在MIPS架构的CPU上开发软件,当然需要使用MIPS专用的工具链来编译代码.不过一般的LINUX发行版内都有相应的配套工具链供用户使用.Ci20出厂时的LINUX发行版为DEBIAN 7.5,相应的 ...