knn和线性分类器
一、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和线性分类器的更多相关文章
- 第二节课-Data-driven approach:KNN和线性分类器分类图片
2017-08-12 1.图片分类是很多CV任务的基础: 2.图片分类要面临很多的问题,比如图片被遮挡,同一种动物有很多种颜色,形状等等,算法需要足够强壮: 3.所以很难直接写出程序来进行图片分类,常 ...
- 1. cs231n k近邻和线性分类器 Image Classification
第一节课大部分都是废话.第二节课的前面也都是废话. First classifier: Nearest Neighbor Classifier 在一定时间,我记住了输入的所有的图片.在再次输入一个图片 ...
- cs231n笔记 (一) 线性分类器
Liner classifier 线性分类器用作图像分类主要有两部分组成:一个是假设函数, 它是原始图像数据到类别的映射.另一个是损失函数,该方法可转化为一个最优化问题,在最优化过程中,将通过更新假设 ...
- 2. SVM线性分类器
在一个线性分类器中,可以看到SVM形成的思路,并接触很多SVM的核心概念.用一个二维空间里仅有两类样本的分类问题来举个小例子.如图所示 和是要区分的两个类别,在二维平面中它们的样本如上图所示.中间的直 ...
- cs231n笔记:线性分类器
cs231n线性分类器学习笔记,非完全翻译,根据自己的学习情况总结出的内容: 线性分类 本节介绍线性分类器,该方法可以自然延伸到神经网络和卷积神经网络中,这类方法主要有两部分组成,一个是评分函数(sc ...
- Python机器学习(基础篇---监督学习(线性分类器))
监督学习经典模型 机器学习中的监督学习模型的任务重点在于,根据已有的经验知识对未知样本的目标/标记进行预测.根据目标预测变量的类型不同,我们把监督学习任务大体分为分类学习与回归预测两类.监督学习任务的 ...
- cs331n 线性分类器损失函数与最优化
tip:老师语速超快...痛苦= = 线性分类器损失函数与最优化 \(Multiclass SVM loss: L_{i} = \sum_{j \neq y_{i}} max(0,s_{i}-s_{y ...
- 文本分类学习 (八)SVM 入门之线性分类器
SVM 和线性分类器是分不开的.因为SVM的核心:高维空间中,在线性可分(如果线性不可分那么就使用核函数转换为更高维从而变的线性可分)的数据集中寻找一个最优的超平面将数据集分隔开来. 所以要理解SVM ...
- SVM入门——线性分类器的求解,核函数
一.问题的描述 从最一般的定义上说,一个求最小值的问题就是一个优化问题(也叫寻优问题,更文绉绉的叫法是规划——Programming),它同样由两部分组成,目标函数和约束条件,可以用下面的式子表示: ...
- cs231n线性分类器作业 svm代码 softmax
CS231n之线性分类器 斯坦福CS231n项目实战(二):线性支持向量机SVM CS231n 2016 通关 第三章-SVM与Softmax cs231n:assignment1——Q3: Impl ...
随机推荐
- Java 8新特性之 Optional 类
前言 java.util.Optional 是java8中引进的一个新的类,我们通过Optional类的源码可以看到,该方法的作用可以对可能缺失的值进行建模,而不是直接将null赋值给变量. Opti ...
- 四月二十八号Java基础知识
1.由于Thread类位于java.lang包中,因而程序的开头不用import导入任何包就可直接使用try{ sleep((int)(1000*Math.random()));//sleep()方法 ...
- 【Zookeeper】(三)部署与使用、服务器节点动态上下线案例分析
目录 Zookeeper部署与使用 1 分布式安装部署 配置服务器编号 增加zoo.cfg集群配置参数 2 启动集群服务器 3 启动集群客户端和命令 4 ️API的使用 引入依赖 创建客户端 创建节点 ...
- 部署kubernetes-dashboard并配置ServiceAccount和登录鉴权
"种草" kubernetes-dashboard 安装部署dashboard 创建用于登录面板的ServiceAccount 权限控制 "种草" kubern ...
- [Pytorch框架] 5.2 Pytorch处理结构化数据
文章目录 5.2 Pytorch处理结构化数据 简介 数据预处理 定义数据集 定义模型 训练 import numpy as np import pandas as pd import torch f ...
- TED--10 ways to have a better conversation
10 ways to have a better conversation All right, I want to see a show of hands: how many of you have ...
- 一文彻底搞懂ZAB算法,看这篇就够了!!!
最近需要设计一个分布式系统,需要一个中间件来存储共享的信息,来保证多个系统之间的数据一致性,调研了两个主流框架Zookeeper和ETCD,发现都能满足我们的系统需求.其中ETCD是K8s中采用的分布 ...
- ChatGPT最全提示词Prompts总结,看这一篇就够了!
以下几乎涵盖了各类人群想要使用ChatGPT的所有提示词,需要的朋友可以直接复制粘贴使用. 从翻译到整理耗费超过2个小时,如果内容对大家有帮助,请不要吝啬你们的喜欢.点赞.关注~ 如何正确的提问? ...
- 2021-07-10:请返回arr中,求子数组的累加和,是<=K的并且是最大的。返回这个最大的累加和。
2021-07-10:请返回arr中,求子数组的累加和,是<=K的并且是最大的.返回这个最大的累加和. 福大大 答案2021-07-10: 时间紧.见代码. 时间复杂度:O(N*logN).空间 ...
- import MySQLdb as Database ModuleNotFoundError: No module named ‘MySQLdb‘
import MySQLdb as Database ModuleNotFoundError: No module named 'MySQLdb' import MySQLdb as Database ...