KNN算法

github完整深度学习相关整理

KNN概述

  • k最近邻,就是k个最近的邻居
  • 一个样本在特征空间中的k个最近邻样本中大多数属于某一个类别/则该样本也属于这一个类别
  • 所有的邻居都是已知类别的/而我们手上要进行分类的数据是不知道类别的

算法表述

  • 计算测试数据和各个训练数据之间的距离
  • 按照距离的递增关系进行排序
  • 选择距离最小的k个点
  • 确定前k个点所在类别的出现频率
  • 返回前k个点中出现频率最高的类别作为测试数据的分类

K的取值

  • K:最邻近的每次计算点的个数
  • K太小:容易被噪点影响/比如k=1的时候/恰好这个数据是个噪点/那么就完全影响了这次分类
  • k太大:误差会增大/k最近邻做法的意义就变小了
  • k尽量取奇数/方便预测

距离怎么计算的

  • 欧几里得距离: E ( x , y ) = ∑ i = 1 n ( x i − y i ) 2 E(x,y)=\sqrt{\sum_{i=1}^{n}(x_{i}-y_{i})^{2}} E(x,y)=i=1n(xiyi)2
  • 曼哈顿距离: D ( x , y ) = ∣ x i − x j ∣ + ∣ y i − y j ∣ D(x,y)=|x_{i}-x_{j}|+|y_{i}-y_{j}| D(x,y)=xixj+yiyj

总结

  • knn是一个简单高效的分类算法并且容易实现
  • 当训练集很大的时候/需要大量的存储空间/并且计算某个点和所有数据的距离是非常耗时的
  • 对随机分布的数据分类效果差
  • 对类内距离小/类间距离大的数据分类效果好
  • 对样本不均匀的数据效果不好,可以进行权重改进,给近的测试点的权重更高
  • KNN非常耗时,所以比较适合小规模数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值