KNN--k-NearestNeighbor可以是是分类法中最简单的算法了。

大致的idea为:找出k各跟新数据点最像的点,看这些点主要属于哪类,那么新数据点也就属于哪类的了。

其伪代码如下:

1. 拿到一个新的数据点

2. 计算其到training set中每个点的距离

3. 对距离排序

4. 对距离新数据点最近的前k个点的label数进行统计,出现次数最多的种类则为新数据点的label

在本篇随笔中,我们最要对距离函数进行讨论。

标准的kNN是使用二范数进行计算距离的,其实我们也还可以使用其他范数(1范数~无穷范数)等范数进行距离计算。

同时,我们也可以考虑参考SVM的kernel trick使用gaussian kernel来算距离。也可以考虑使用余弦函数算距离。

那么,实际应用中我们怎么选取合适的距离函数呢?

可以考虑是用k-fold的方法来试错得出。

简单的说,就是对使用以上各种距离函数的kNN:把data set分成k组。重复k次,每次选第k组为training set,剩下的为testing set。

计算总的错误数,然后排序,找到能使错误数最小的距离函数。

最新文章

  1. AnjularJS异步编程 Promise和$q
  2. mysql操作查询结果case when then else end用法举例
  3. app接口测试-bug分类
  4. jquery的checkbox 全选和全不选
  5. bzoj1036 [ZJOI2008]树的统计Count
  6. nfs客户端报错解决Stale file handle
  7. Nginx 缓存参数
  8. sublime text帮你更好的写python
  9. 《JS权威指南学习总结--第六章 对象》
  10. hdu4185二分图匹配
  11. Android Studio生成签名文件,自动签名,以及获取SHA1和MD5值
  12. FPGA计算中定标与位扩展的实现
  13. Android热点回顾第一期
  14. Hadoop生产环境配置文件
  15. Swift 学习- 06 -- 控制流
  16. python3 读取dbf文件报错 UnicodeDecodeError: 'gbk' codec can't decode
  17. 坑之mysql 字符串与数字操作
  18. Redis的Multi的内幕真相
  19. svn eclipse链接
  20. Codeforces 995 E - Number Clicker

热门文章

  1. springboot(2)-阶段篇
  2. linux上搭建单机版hadoop和spark
  3. pickle和JSON的序列化
  4. [HDU 3521] [最小割] Being a Hero
  5. require是什么?能做什么
  6. Vue多页面 按钮级别权限控制 directive指令控制
  7. nginx 常用的命令和配置文件
  8. Python核心技术与实战——二一|巧用上下文管理器和with语句精简代码
  9. 提取包含QQ的文本为QQ邮箱
  10. grunt-contrib-imagemin 图像压缩