一、knn算法概述

knn首选是最简单的分类算法,其是有监督学习的分类算法之一。

二、knn算法过程

knn(k nearest neighbors k个最近的邻居):knn是当预测一个新的值x的时候,根据它距离k个点是什么类别来判断所属的类别。(具体理解见下图)

注意到k的选取和点的距离的计算方式有关,会影响最终的结果。

三、距离的计算方式

L1距离(曼哈顿距离)

L2距离(欧式距离)

四、K值选择

K值的选取是根据交叉验证,从选取一个较小的K值开始,不断增加k的值,最终找到一个合适的K值。另外,交叉验证的图大致如下:

错误率是先降低,再升高。原因是首先周围有更多的样本可以借鉴了,分类准确率会更高一点。其次就是当K的增大的过程中,Knn就没有什么意义了。

五、Knn特点

非参的:

这个模型不会对数据做出任何的假设,另外这个模型的建立是根据数据来决定的。对比的是,线性回归则是首先假设线性回归是一条直线。

惰性:

没有明确的训练过程或者是因为训练过程很快。

Knn算法优点

1.相对于其他算法更简单易用。

2.模型训练更快。

3.预测效果好。

4.对异常值不敏感。

Knn算法缺点

1.预测阶段缓慢

2.对内存要求较高

3.对不相关的功能和数据规模敏感

六、knn与k-means的区别

knn算法:

knn算法基于k个周围的邻居来对未标记的观察进行分类,不用对未看见的数据集进行泛化。

k-means算法:

牧师-村民模型

有四个牧师去郊区布道,一开始牧师们随意选了几个布道点,并且把这几个布道点的情况公告给了郊区所有的村民,于是每个村民到离自己家最近的布道点去听课。
听课之后,大家觉得距离太远了,于是每个牧师统计了一下自己的课上所有的村民的地址,搬到了所有地址的中心地带,并且在海报上更新了自己的布道点的位置。
牧师每一次移动不可能离所有人都更近,有的人发现A牧师移动以后自己还不如去B牧师处听课更近,于是每个村民又去了离自己最近的布道点……
就这样,牧师每个礼拜更新自己的位置,村民根据自己的情况选择布道点,最终稳定了下来。

算法步骤

1.选择初始化的 k 个样本作为初始聚类中心 a=a1,a2,…ak ;

2.针对数据集中每个样本点计算它到 k 个聚类中心的距离,并将其分到距离最小的聚类中心所对应的类中;

3.针对每个类别点 ,重新计算它们的聚类中心;

4.重复上述2、3两步,直到达到某个终止条件

七、线性分类器

模型介绍

线性分类器是一种线性映射,将输入的图像特征映射为类别分数。

决策规则:若某个分类的得分比其他都要大,则该图片属于这个分类。

分类过程

1.图像表示成向量

2.计算当前图片每个类别的分数

3.通过类别得分判定当前图像属于猫类

模型特点

形式简单、易于理解
通过层级结构(神经网络)或者高维映射(支 撑向量机)可以
形成功能强大的非线性模型

knn和线性分类器的更多相关文章

  1. 第二节课-Data-driven approach:KNN和线性分类器分类图片

    2017-08-12 1.图片分类是很多CV任务的基础: 2.图片分类要面临很多的问题,比如图片被遮挡,同一种动物有很多种颜色,形状等等,算法需要足够强壮: 3.所以很难直接写出程序来进行图片分类,常 ...

  2. 1. cs231n k近邻和线性分类器 Image Classification

    第一节课大部分都是废话.第二节课的前面也都是废话. First classifier: Nearest Neighbor Classifier 在一定时间,我记住了输入的所有的图片.在再次输入一个图片 ...

  3. cs231n笔记 (一) 线性分类器

    Liner classifier 线性分类器用作图像分类主要有两部分组成:一个是假设函数, 它是原始图像数据到类别的映射.另一个是损失函数,该方法可转化为一个最优化问题,在最优化过程中,将通过更新假设 ...

  4. 2. SVM线性分类器

    在一个线性分类器中,可以看到SVM形成的思路,并接触很多SVM的核心概念.用一个二维空间里仅有两类样本的分类问题来举个小例子.如图所示 和是要区分的两个类别,在二维平面中它们的样本如上图所示.中间的直 ...

  5. cs231n笔记:线性分类器

    cs231n线性分类器学习笔记,非完全翻译,根据自己的学习情况总结出的内容: 线性分类 本节介绍线性分类器,该方法可以自然延伸到神经网络和卷积神经网络中,这类方法主要有两部分组成,一个是评分函数(sc ...

  6. Python机器学习(基础篇---监督学习(线性分类器))

    监督学习经典模型 机器学习中的监督学习模型的任务重点在于,根据已有的经验知识对未知样本的目标/标记进行预测.根据目标预测变量的类型不同,我们把监督学习任务大体分为分类学习与回归预测两类.监督学习任务的 ...

  7. cs331n 线性分类器损失函数与最优化

    tip:老师语速超快...痛苦= = 线性分类器损失函数与最优化 \(Multiclass SVM loss: L_{i} = \sum_{j \neq y_{i}} max(0,s_{i}-s_{y ...

  8. 文本分类学习 (八)SVM 入门之线性分类器

    SVM 和线性分类器是分不开的.因为SVM的核心:高维空间中,在线性可分(如果线性不可分那么就使用核函数转换为更高维从而变的线性可分)的数据集中寻找一个最优的超平面将数据集分隔开来. 所以要理解SVM ...

  9. SVM入门——线性分类器的求解,核函数

    一.问题的描述 从最一般的定义上说,一个求最小值的问题就是一个优化问题(也叫寻优问题,更文绉绉的叫法是规划——Programming),它同样由两部分组成,目标函数和约束条件,可以用下面的式子表示: ...

  10. cs231n线性分类器作业 svm代码 softmax

    CS231n之线性分类器 斯坦福CS231n项目实战(二):线性支持向量机SVM CS231n 2016 通关 第三章-SVM与Softmax cs231n:assignment1——Q3: Impl ...

随机推荐

  1. [Windows/Linux]判别服务器: 虚拟机 | 物理机 ?

    物理主机,一般称: [宿主机] 虚拟机信息,一般涉及如下关键词: VMware : VMware 虚拟化技术 Vistualbox KVM(Kernel-based Virtual Machine): ...

  2. Arch Linux安装笔记

    ​ 最近有些厌倦Windows,所以想尝试一下Linux,选择Arch的原因不再赘述,建议以ArchLinux官方安装指南为主,这篇笔记只是方便我自己安装而写的,仅供参考. 1. 安装前的准备 1.1 ...

  3. 理解Linux系统: 进程

    Linux内核版本: 2.6.11.12 编写代码: 创建进程 创建进程使用fork系统调用,官方文档对于fork的描述: fork() creates a new process by duplic ...

  4. 【译】ConfigureAwait FAQ

    .NET 在数年前就在语言和库中添加了 async/await.在那段时间里,它像野火一样蔓延开来,不仅在 .NET 生态系统中,而且在无数其他语言和框架中被复制.在 .NET 中也看到了大量的改进, ...

  5. Ajax 方法返回值无效

    遇到错误为再ajax 中返回数据不起作用 原来是因为在阿贾克斯success中不能直接return 需要执行完再进行返回 以下代码为正确代码        function TestAction(id ...

  6. Sitecore XP 10.3(latest) Docker一键部署

    本文演示通过PowerShell+Docker Desktop for Windows 一键部署Sitecore10.3(即Sitecore最新版)Docker开发/测试/演示 环境. 官方参考 Si ...

  7. Django笔记三十二之session登录验证操作

    本文首发于公众号:Hunter后端 原文链接:Django笔记三十二之session登录验证操作 这一篇笔记将介绍 session 相关的内容,包括如何在系统中使用 session,以及利用 sess ...

  8. 2022年5月5日模拟赛题解与总结(ABC237)

    总结 初一第一,竞赛班第二 还可以,为了照顾提高班来的四个同学放了四个水题,可惜他们做的不是很理想,希望他们下次可以获得满意的成绩 这次做的其实是 AtCoder ABC237 A.Not Overf ...

  9. 可视化—gojs 超多超实用经验分享(一)

    目录 1. 设置分组模板,默认样式,统一最小宽度,展开收起状态监听 2. 分组名称显示成员个数: 分组名称+成员个数: name(children) 3. 分组成员为空时,不显示 placeholde ...

  10. 咚咚咚,你的王国之泪已上线「GitHub 热点速览」

    本周最大的热点,莫过于 Mojo 语言了,几大媒体均有报道这门兼顾 Python 优点和性能的新语言.当然还有凭借 Switch 游戏<塞尔达传说·王国之泪>登上热榜,获得 3,500+ ...