当前位置: 首页 > news >正文

什么是KNN( K近邻算法)

什么是KNN( K近邻算法)

虽然名字中有NN,KNN并不是哪种神经网络,它全名K-Nearest-Neighbors:K近邻算法,是机器学习中常用的分类算法。

请添加图片描述

物以类聚,人以群分。KNN的基础思想很简单,要判断一个新数据的类别,就看它的邻居都是谁。

假设我们的任务是分类水果,虽然不知道新来的水果是梨还是苹果,但通过观察它的大小和颜色,我们找到了它在坐标系中的位置,再看看已经确定的苹果和梨都在哪,如果附近的苹果多,我们就认为它是苹果,反之认为它是梨。

请添加图片描述

KNN中的K指的是K个邻居,K=3就是通过距离最近的3个样本,来判断新数据的类别。

请添加图片描述

大小和颜色是数据的特征,苹果和梨是数据的标签。计算距离时既可以使用两点之间的直线距离,也就是欧式距离,也可以使用坐标轴距离的绝对值的和,也就是曼哈顿距离。

对于KNN来说,K的取值非常重要,如果K的值太小,很容易受个例影响,K的值太大,又会受到距离较远的特殊数据影响。K的取值受问题自身和数据集大小决定,很多时候要靠反复尝试。

KNN算法能做什么?

  • 根据花瓣长度、宽度等特征判断植物类别
  • 将文本分词、统计词频等处理后判断文章的类型
  • 电商、视频网站可以找到与你类似的用户,依据他们的选择推荐你可能感兴趣的商品或内容

简单好用的KNN同样存在一定的缺点,它的流程是先计算新样本和所有样本之间的距离,按由近及远的顺序排序后,再按K值确定分类,因此数据越多,KNN的计算量越大,效率也就越低,很难应用到较大的数据集中 。

请添加图片描述
http://www.lryc.cn/news/133515.html

相关文章:

  • Linux查看命令总结
  • npm报错 Cannot find module ‘@vuepress\core\node_m
  • mybatis入门环境搭建及CRUD
  • 小程序变化历史记录
  • jstack(Stack Trace for Java)Java堆栈跟踪工具
  • linux面试题整理
  • Linux笔记
  • Dockerfile制作Web应用系统nginx镜像
  • lama-cleaner:基于SOTA AI 模型Stable Diffusion驱动的图像修复工具
  • LVS-DR模式以及其中ARP问题
  • 2023-08-15 Untiy进阶 C#知识补充5——C#6主要功能与语法
  • 最新两年工作经验总结
  • MATLAB——线性神经网络预测程序
  • 面试之快速学习STL-迭代适配器
  • 【Linux】【驱动】杂项设备驱动
  • 【HCIP】10.路由策略
  • 【腾讯云Cloud Studio实战训练营】使用Cloud Studio社区版快速构建React完成点餐H5页面还原
  • 测试开发工程必备技能之一:Mock的使用
  • Qbytearray:从十六进制字符串转字节一些注意事项
  • 【Docker】Docker的使用案例以及未来发展、Docker Hub 服务、环境安全的详细讲解
  • Redis有哪几种内存淘汰策略?
  • 操作系统练习:在Linux上创建进程,及查看进程状态
  • Java虚拟机(JVM):垃圾收集算法
  • 【爬虫】Requests库的使用
  • 了解生成对抗网络 (GAN)
  • opencv-人脸关键点定位
  • 言语理解与表达 郭熙(一)
  • 【stable-diffusion使用扩展+插件和模型资源(上】
  • 面试之快速学习STL-无序关联式容器
  • C++线程库