美文网首页
KNN与K-Means算法的区别

KNN与K-Means算法的区别

作者: MapleLuv | 来源:发表于2018-07-06 08:45 被阅读0次

    内容参考:
    Kmeans算法与KNN算法的区别
    kNN与kMeans聚类算法的区别

    对比项 KNN K-Means
    目的 为了确定一个点的分类 为了将一系列点集分成K类
    分类算法 聚类算法
    监督学习(有学习语料) 无监督学习(没有学习语料)
    没有明显的前期训练过程,属于memory-based learning 有明显的前期训练过程
    K的含义 “k”是用来计算的相邻数据数。来了一个样本x,要给它分类,即求出它的y,就从数据集中,在x附近找离它最近的K个数据点,这K个数据点,类别c占的个数最多,就把x的label设为c “k”是类的数目。K是人工固定好的数字,假设数据集合可以分为K个簇,由于是依靠人工定好,需要一点先验知识
    K值确定后每次结果固定 K值确定后每次结果可能不同,从 n个数据对象任意选择 k 个对象作为初始聚类中心,随机性对结果影响较大
    时间复杂度 O(n) O(nkt),t为迭代次数
    常用距离 曼哈顿距离、欧式距离和闵可夫斯基距离 欧几里得距离
    相似点 都包含这样的过程:给定一个点,在数据集中找离它最近的点。即二者都用到了NN(Nears Neighbor)算法,一般用KD树来实现NN。

    KNN-近邻算法-分类算法

    思想:在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对应的特征进行相互比较,找到训练集中与之最为相似的前K个数据,则该测试数据对应的类别就是K个数据中出现次数最多的那个分类。

    算法的描述为:
    1)计算测试数据与各个训练数据之间的距离(一般使用欧氏距离或曼哈顿距离);


    image

    2)按照距离的递增关系进行排序;
    3)选取距离最小的K个点;
    4)确定前K个点所在类别的出现频率;
    5)返回前K个点中出现频率最高的类别作为测试数据的预测分类。

    K-Means聚类算法

    把n个对象根据他们的属性分为k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小

    Kmeans算法的缺陷:

    • 聚类中心的个数K 需要事先给定,但在实际中这个 K 值的选定是非常难以估计的,很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适
    • Kmeans需要人为地确定初始聚类中心,不同的初始聚类中心可能导致完全不同的聚类结果。(可以使用Kmeans++算法来解决)
      针对上述第2个缺陷,可以使用Kmeans++算法来解决

    相关文章

      网友评论

          本文标题:KNN与K-Means算法的区别

          本文链接:https://www.haomeiwen.com/subject/vdwpuftx.html