• KNN(k近邻法)算法理论和实战


    KNN概念

    k近邻法(k-nearest neighbor,k-NN)是一种基本分类回归方法。

    k近邻法的输入为实例的特征向量对应于特征空间的点;输出为实例的类别,可以取多类。

    k近邻法假设给定一个训练数据集,其中的实例类别已定。分类时,对新的实例,根据其k个最近邻的训练实例的类别,通过多数表决等方式进行预测。因此,k近邻法不具有显式的学习过程。

    KNN过程

    对未知类别属性的数据集中的每个点依次执行以下操作:

    • (1) 计算已知类别数据集中的点与当前点之间的距离;

    • (2) 按照距离递增次序排序;

    • (3) 选取与当前点距离最小的k个点;

    • (4) 确定前k个点所在类别的出现频率;

    • (5) 返回前k个点出现频率最高的类别作为当前点的预测分类

    K 值如何选择

    如果 K 值比较小,就相当于未分类物体与它的邻居非常接近才行。这样产生的一个问题就是,如果邻居点是个噪声点,那么未分类物体的分类也会产生误差,这样 KNN 分类就会产生 
    过拟合。


    如果 K 值比较大,相当于距离过远的点也会对未知物体的分类产生影响,虽然这种情况的好处是鲁棒性强,但是不足也很明显,会产生欠拟合情况,也就是没有把未分类物体真正分类出来。

    所以 K 值应该是个实践出来的结果,并不是我们事先而定的。在工程上,我们一般采用交叉验证的方式选取 K 值。

    交叉验证的思路就是,把样本集中的大部分样本作为训练集,剩余的小部分样本用于预测,来验证分类模型的准确性。所以在 KNN 算法中,我们一般会把 K 值选取在较小的范围内,同时在验证集上准确率最高的那一个最终确定作为 K 值。

    KNN和K-Means的比较

    K-Means是聚类算法,KNN 是分类算法。 

    这两个算法分别是两种不同的学习方式。

    • KNN 是有监督学习数据集是带Label的数据,K-Means 是非监督学习,数据集是无Label,杂乱无章的数据
    • KNN没有明显的训练过程,基于Memory-based learning;K-Means有明显的训练过程。

    • KNN 中的 K 值代表 K 个最接近的邻居;K-Means 中的 K 值代表 K 类。

    参考文章

     超详细:KNN与K-means从入门到实战!

  • 相关阅读:
    FFmpeg开发笔记(十八)FFmpeg兼容各种音频格式的播放
    第09章 房地产行业案例实战
    动态规划01背包问题
    数组拆分-力扣561-C++
    es为什么这么快
    求臻医学官网焕新升级
    牛客网Java专题练习
    甲骨文发布适用于 MongoDB 的 Oracle Database API;Chrome 和 Edge 互相“拉踩”;树莓派驱动程序现可在 Android 上运行 | 开源日报
    C++模板元模板实战书籍讲解第一章题目讲解
    javascript输出数据在控制台中console的常用方法(上)
  • 原文地址:https://blog.csdn.net/JiShuiSanQianLi/article/details/129369061