热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

初识机器学习之kNN算法

k近邻(k-NearestNeighbor,简称kNN)学习是一种常用的监督学习方法,其工作机制非常简单:给定测试样本,基于某种距离度量找

k近邻(k-Nearest Neighbor,简称kNN)学习是一种常用的监督学习方法,其工作机制非常简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本。然后基于这k个“邻居”的信息进行预测。通常在分类任务中可使用“投票法”,即选择这k个样本中出现最多的类别标记作为预测结果;在回归任务中可使用“平均法”,即将这k个样本中的实值输出标记的平均值作为预测结果;还可基于距离远近进行加权平均或加权投票,距离越近的样本权重越大。kNN没有一个显示的训练过程。

如下图所示,判断测试样本是正例还是反例,虚线显示出等距线:

测试样本在k=1或k=5时被判别为正例,k=3时被判别为反例。可以看出k的选择至关重要。关于k值如何选择现在还有有一个定论。一般做法是多选几个k进行交叉验证。

  k–近邻算法是一种非参数模型。简单来说,参数模型(如线性回归、逻辑回归 等)都包含待确定的参数。训练过程的主要目的是寻找代价最小的最优参数。 参数一旦确定,模型就完全固定了,进行预测时完全不依赖于训练数据。非参数 模型则相反,在每次预测中都需要重新考虑部分或全部训练(已知的) 数据。


kNN算法

优点:
  (1)简单且有效
  (2)对数据的分布没有要求
  (3)训练阶段很快
缺点:
  (1)不产生模型
  (2)分类阶段很慢
  (3)需要大量的内存
  (4)名义变量和缺失值需要额外处理

 

遗留问题:

1:kd树

2:kd树搜索

转:https://www.cnblogs.com/aloiswei/p/5934263.html



推荐阅读
  • 短暂的人生中,IT和技术只是其中的一部分。无论换工作还是换行业,最终的目标是成功、荣誉和收获。本文探讨了技术人员如何跳出纯技术的局限,实现更大的职业发展。 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 高效重装Windows 10系统指南
    如何快速地为您的电脑重装Windows 10系统?本文将详细介绍从下载系统镜像到安装完成的每一步操作。 ... [详细]
  • 阿里云服务器搭建详解——Ubuntu
    由于自己电脑配置跟不上,双系统一开,整个电脑就会变得非常卡顿,所以决定在阿里云买一个云服务器。听朋友说,学生买的话是非常便宜 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 非计算机专业的朋友如何拿下多个Offer
    大家好,我是归辰。秋招结束后,我已顺利入职,并应公子龙的邀请,分享一些秋招面试的心得体会,希望能帮助到学弟学妹们,让他们在未来的面试中更加顺利。 ... [详细]
  • 非线性门控感知器算法的实现与应用分析 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 深入解析监督学习的核心概念与应用
    本文深入探讨了监督学习的基本原理及其广泛应用。监督学习作为机器学习的重要分支,通过利用带有标签的训练数据,能够有效构建预测模型。文章详细解析了监督学习的关键概念,如特征选择、模型评估和过拟合问题,并介绍了其在图像识别、自然语言处理等领域的实际应用。 ... [详细]
  • 在学习 ASP.NET 时,遇到了编译器错误 BC30456,提示 'InitializeCulture' 不是类的成员。本文将详细介绍该问题的原因及解决方案。 ... [详细]
  • Bootstrap 插件使用指南
    本文详细介绍了如何在 Web 前端开发中使用 Bootstrap 插件,包括自动触发插件的方法、插件的引用方式以及具体的实例。 ... [详细]
  • .children() 方法用于获取选中元素的所有直接子元素。此方法仅遍历DOM树的一层,如需遍历多层子元素,请使用 .find() 方法。 ... [详细]
  • A*算法在AI路径规划中的应用
    路径规划算法用于在地图上找到从起点到终点的最佳路径,特别是在存在障碍物的情况下。A*算法是一种高效且广泛使用的路径规划算法,适用于静态和动态环境。 ... [详细]
  • 如何撰写数据分析师(包括转行者)的面试简历?
    CDA数据分析师团队出品,作者:徐杨老师,编辑:Mika。本文将帮助您了解如何撰写一份高质量的数据分析师简历,特别是对于转行者。 ... [详细]
author-avatar
如痴如醉as_961
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有