精华内容
下载资源
问答
  • KNNKmeans的区别

    千次阅读 2018-06-08 14:24:39
    KNN与K-Means的区别KNN(K-Nearest Neighbor)介绍Wikipedia上的 KNN词条 中有一个比较经典的图如下:KNN的算法过程是是这样的:从上图中我们可以看到,图中的数据集是良好的数据,即都打好了label,一类是蓝色的...

    KNN与K-Means的区别

    KNN(K-Nearest Neighbor)介绍

    Wikipedia上的 KNN词条 中有一个比较经典的图如下:

    KNN的算法过程是是这样的:

    从上图中我们可以看到,图中的数据集是良好的数据,即都打好了label,一类是蓝色的正方形,一类是红色的三角形,那个绿色的圆形是我们待分类的数据。

    如果K=3,那么离绿色点最近的有2个红色三角形和1个蓝色的正方形,这3个点投票,于是绿色的这个待分类点属于红色的三角形。

    如果K=5,那么离绿色点最近的有2个红色三角形和3个蓝色的正方形,这5个点投票,于是绿色的这个待分类点属于蓝色的正方形。(参考 酷壳的 K Nearest Neighbor 算法 )

    我们可以看到,KNN本质是基于一种数据统计的方法!其实很多机器学习算法也是基于数据统计的。

    KNN是一种memory-based learning,也叫instance-based learning,属于lazy learning。即它没有明显的前期训练过程,而是程序开始运行时,把数据集加载到内存后,不需要进行训练,就可以开始分类了。

    具体是每次来一个未知的样本点,就在附近找K个最近的点进行投票。

    再举一个例子,Locally weighted regression (LWR)也是一种 memory-based 方法,如下图所示的数据集。

    用任何一条直线来模拟这个数据集都是不行的,因为这个数据集看起来不像是一条直线。但是每个局部范围内的数据点,可以认为在一条直线上。每次来了一个位置样本x,我们在X轴上以该数据样本为中心,左右各找几个点,把这几个样本点进行线性回归,算出一条局部的直线,然后把位置样本x代入这条直线,就算出了对应的y,完成了一次线性回归。

    也就是每次来一个数据点,都要训练一条局部直线,也即训练一次,就用一次。

    LWR和KNN是不是很像?都是为位置数据量身定制,在局部进行训练。

    K-Means介绍

    如图所示,数据样本用圆点表示,每个簇的中心点用叉叉表示。(a)刚开始时是原始数据,杂乱无章,没有label,看起来都一样,都是绿色的。(b)假设数据集可以分为两类,令K=2,随机在坐标上选两个点,作为两个类的中心点。(c-f)演示了聚类的两种迭代。先划分,把每个数据样本划分到最近的中心点那一簇;划分完后,更新每个簇的中心,即把该簇的所有数据点的坐标加起来去平均值。这样不断进行”划分—更新—划分—更新”,直到每个簇的中心不在移动为止。(图文来自Andrew ng的机器学习公开课)。

    推荐关于K-Means的两篇博文, K-Means 算法 _ 酷壳 , 漫谈 Clustering (1)_ k-means pluskid 。

    KNN和K-Means的区别

    KNN

    K-Means

    1.KNN是分类算法 

     

    2.监督学习 

    3.喂给它的数据集是带label的数据,已经是完全正确的数据

    1.K-Means是聚类算法 

     

    2.非监督学习 

    3.喂给它的数据集是无label的数据,是杂乱无章的,经过聚类后才变得有点顺序,先无序,后有序

    没有明显的前期训练过程,属于memory-based learning有明显的前期训练过程
    K的含义:来了一个样本x,要给它分类,即求出它的y,就从数据集中,在x附近找离它最近的K个数据点,这K个数据点,类别c占的个数最多,就把x的label设为cK的含义:K是人工固定好的数字,假设数据集合可以分为K个簇,由于是依靠人工定好,需要一点先验知识
      
    相似点:都包含这样的过程,给定一个点,在数据集中找离它最近的点。即二者都用到了NN(Nears Neighbor)算法,一般用KD树来实现NN。


    转载自:https://www.cnblogs.com/nucdy/p/6349172.html

    展开全文
  • 今日面试题KNN和Kmeans聚类(kmeans clustering)有什么不同?解析:不要被它们名字里“K”误导。你应该知道,这两种算法之间根本区别是,Kmea...
        

    640?wx_fmt=gif

    640?wx_fmt=gif

    今日面试题

    KNN和Kmeans聚类(kmeans clustering)有什么不同?


    解析:

    不要被它们的名字里的“K”误导。

    你应该知道,这两种算法之间的根本区别是,Kmeans本质上是无监督学习而KNN是监督学习。Kmeans是聚类算法。KNN是分类(或回归)算法。

    Kmeans算法把一个数据集分割成簇,使得形成的簇是同构的,每个簇里的点相互靠近。该算法试图维持这些簇之间有足够的可分离性。由于无监督的性质,这些簇没有任何标签。

    NN算法尝试基于其k(可以是任何数目)个周围邻居来对未标记的观察进行分类。它也被称为懒惰学习法,因为它涉及最小的模型训练。因此,它不用训练数据对未看见的数据集进行泛化。



    END

    640?wx_fmt=gif


    今日学习推荐


    机器学习集训营第八期

    火热报名中


    2019年5月6日开课


    前140人特惠价:15199 


    报名加送18VIP[包2018全年在线课程和全年GPU]


    且两人及两人以上组团还能各减500元

    有意的亲们抓紧时间喽


    咨询/报名/组团可添加微信客服

    julyedukefu_02


    扫描下方二维码

    免费试听


    640?wx_fmt=png

    长按识别二维码


    640?wx_fmt=gif


    640?wx_fmt=gif

    人工智能人才争抢白热化?学好数学才能C位出道!

    哪些机器学习算法不需要做归一化处理?

    一文详解:什么是B树?

    机器学习中的数学基础(微积分和概率统计)

    34个最优秀好用的Python开源框架

    【实战分享】电影推荐系统项目实战应用

    Python打牢基础,从19个语法开始!

    扫描下方二维码  关注:七月在线实验室 


    后台回复:100   免费领取【机器学习面试100题】

    后台回复:干货 免费领取全体系人工智能学习资料

    后台回复: 领资料 【NLP工程师必备干货资料】

    ▼更多精彩推荐,请关注我们▼640?wx_fmt=png640?wx_fmt=jpeg640?wx_fmt=gif“阅读原文”我们一起进步640?wx_fmt=png在看点一下
    展开全文
  • 1、欧式距离与余弦距离 对于两个向量 AB ,其余弦相似度定义为 即两个向量夹角余弦,关洼是向量之间角度关系,并不关心他们绝对大小,真取值范围是[-1, 1] ...

    1、欧式距离与余弦距离
    对于两个向量 A和B ,其余弦相似度定义为
    在这里插入图片描述
    即两个向量夹角的余弦,关洼的是向量之间的角度关系,并不关心他们的绝对大小,真取值范围是[-1, 1]
    总体来说,欧氏距离体现数值上的绝对差异,而余弦距离体现方向上的相对差异。越接近于1说明两个样本的相对方向越相似,相反越靠近于-1,说明两个样本的方向越不一样。

    1)例如,统计两部剧的用户观看行为,用户A的观看向量为(0,1),用户B为(1,0);此时二者的余弦距很大,而欧氏距离很小;我们分析两个用户对于不同视频的偏好,更关注相对差异,显然应当使用余弦距离。说明两个用户的观看行为存在很大的差异

    2)而当我们分析用户活跃度,以登陆次数(单位:次)和平均观看时长(单:分钟)作为特征时,余弦距离会认为(1,10)、(10,100)两个用户距离很近;但显然这两个用户活跃度是有着极大差异的,此时我们更关注数值绝对差异,应当使用欧氏距离。
    问题2:
    1、knn与k-means的区别
    首先我们比较一下Knn和K-means的基本算法原理。

    KNN
    特点:
    1、分类算法
    2、监督学习
    3、数据集是带Label的数据
    4、没有明显的训练过程,基于Memory-based learning
    5、K值含义 - 对于一个样本X,要给它分类,首先从数据集中,在X附近找离它最近的K个数据点,将它划分为归属于类别最多的一类
    K-means
    1、聚类算法
    2、非监督学习
    3、数据集是无Label,杂乱无章的数据
    4、有明显的训练过程
    5、K值含义- K是事先设定的数字,将数据集分为K个簇,需要依靠人的先验知识

    不同点:
    1、两种算法之间的根本区别是,K-means本质上是无监督学习,而KNN是监督学习;K-means是聚类算法,KNN是分类(或回归)算法。
    2、k-nn有标签而k-means无标签
    3、k-means有训练过程,而k-nn没有训练的过程
    问题3:为什么k-nn中常用欧式距离而不选择曼哈顿距离
    首先
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    从这张图中可以看出欧式距离更关注于点在空间的相对距离,而曼哈顿距离择关注于点如何通过坐标轴上的方向到达另一点。
    而在计算距离时我们更关注于样本之间的绝对差异,而不考虑样本之间的投影差异,所以采用欧式距离。

    展开全文
  • kNNKmeans算法学习

    2019-10-01 08:16:15
    首先需要知道,kNN和Kmeans的最重要区别: kNN算法是分类算法,分类算法肯定是需要有学习语料,然后通过学习语料的学习之后的模板来匹配我们的测试语料集,将测试语料集合进行按照预先学习的语料模板来分类 ...

    kNN和Kmeans在初学者学习过程中,可能会产生一些混淆,趁着复习阶段在博客总结一下,学习到的和总结的知识点。

    首先需要知道,kNN和Kmeans的最重要区别:

    • kNN算法是分类算法,分类算法肯定是需要有学习语料,然后通过学习语料的学习之后的模板来匹配我们的测试语料集,将测试语料集合进行按照预先学习的语料模板来分类
    • Kmeans算法是聚类算法,聚类算法与分类算法最大的区别是聚类算法没有学习语料集合。

     kNN(K-Nearest Neighbor)介绍

    算法思路:如果一个样本在特征空间中k个最相似(即特征空间中“距离”最临近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。

    举个栗子:

    从上图中我们可以看到,图中的数据集是良好的数据,即都打好了label,一类是蓝色的正方形,一类是红色的三角形,那个绿色的圆形是我们待分类的数据。

    kNN的算法过程大致如下:

    • 如果K=3,那么离绿色点最近的有2个红色三角形和1个蓝色的正方形,这3个点投票,于是绿色的这个待分类点属于红色的三角形
    • 如果K=5,那么离绿色点最近的有2个红色三角形和3个蓝色的正方形,这5个点投票,于是绿色的这个待分类点属于蓝色的正方形

    所以kNN本质是基于一种数据统计的方法。 kNN是一种memory-based learning,也叫instance-based learning,属于lazy learning。即它没有明显的前期训练过程,而是程序开始运行时,把数据集加载到内存后,不需要进行训练,就可以开始分类了。

    所以在新数据进入模型判断类别时,模型会计算所有已有数据点与新数据的“距离”,并根据距离大小进行排序,采取一种投票的方式,来判断新数据属于什么类别。

    通过上述讲解,可以看出,kNN没有训练过程,但在预测时,会很慢,并且对异常值不敏感(因为异常值会排到很靠后的名次,用不上)。


     Kmeans介绍

    算法思路:与kNN和已有数据点相比,KMeans是在找一个“中心”。而K,就是K个中心。它把n个对象根据他们的属性分为K个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。

    如图所示,数据样本用圆点表示,每个簇的中心点用叉叉表示。

    (a) 刚开始时是原始数据,杂乱无章,没有label,看起来都一样,都是绿色的。

    (b) 假设 数据集可以分为两类,令K=2,随机在坐标上选两个点,作为两个类的中心点。

    (c-f) 演示了聚类的两种迭代。先划分,把每个数据样本划分到最近的中心点 那一簇;划分完后,更新每个簇的中心,即把该簇的所有数据点的坐标加起来去平均值。这样不断进行”划分—更新—划分—更新”,直到每个簇的中心不在移动为 止。

    那么如何定义“距离”,就可以使用很多种度量方式了,例如:

    • 欧式距离(Euclidean Distance) 
    • 曼哈顿距离(Manhattan Distance) 
    • 闵科夫斯基距离(Minkowski Distance) 

     

    问题来了,既然上面说到,使用K个中心来聚类,那么K怎么选?

    这个说实话没有特别的好方法,一般是经验或者是实验得出。

     

    好不容易选出来K是多少了,初始的K放在哪里?

    对于KMeans来说,不同的初始聚类中心可能导致完全不同的聚类效果,于是K-Means++算法就诞生了。


     K-Means++ 介绍

    算法思路:K-Means++的诞生主要是因为上述的第二个问题,即初始聚类中心怎么选?

    选取初始聚类中心的思路:

    1. 从输入的数据点集合中随机选择一个点作为第一个聚类中心(与KMeans随便选不同)
    2. 对于数据集中的每一个点x,计算它与最近聚类中心(指已选择的聚类中心)的距离D(x)
    3. 选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点,被选取作为聚类中心的概率较大
    4. 重复2和3直到k个聚类中心被选出来
    5. 利用这k个初始的聚类中心来运行标准的k-means算法

     从上面的思路可以看出来,关键在于如何重复生成K-1个聚类中心,这里面概率如何设置,这里提供一种思路:

    1. 先从我们的数据库随机挑个随机点当“种子点”
    2. 对于每个点,我们都计算其和最近的一个“种子点”的距离D(x)并保存在一个数组里,然后把这些距离加起来得到Sum(D(x))。
    3. 然后,再取一个随机值,用权重的方式来取计算下一个“种子点”。这个算法的实现是,先取一个能落在Sum(D(x))中的随机值Random,然后用Random -= D(x),直到其<=0,此时的点就是下一个“种子点”。
    4. 重复2和3直到k个聚类中心被选出来
    5. 利用这k个初始的聚类中心来运行标准的k-means算法

    上面加粗的地方不好理解,我举个例子:

    例如当前有4个D(x)较大的数(这4个数分别叫A, B, C, D)其中,B离当前最近的聚类中心的距离是20,比ACD三点都要远,所以B当选新聚类中心的概率也越大,random可以理解为一个0~1的随机数,然后Sum(D(x))*Random,看得出的结果是多少。其实就像是一个筛子往这四个盒子里扔,B占的地方大,几率高。

    相关实现:点我


    总结:

    两者区别

    kNN

    • kNN是分类算法,监督学习,喂给它的数据集是带label的数据,已经是完全正确的数据
    • 没有明显的前期训练过程,属于memory-based learning
    • K的含义:来了一个样本x,要给它分类,即求出它的y,就从数据集中,在x附近找离它最近的K个数据点,这K个数据点,类别c占的个数最多,就把x的label设为c

    KMeans

    • KMeans是聚类算法,非监督学习,喂给它的数据集是无label的数据,是杂乱无章的,经过聚类后才变得有点顺序,先无序,后有序
    • 有明显的训练过程(聚类中心的改变)
    • K的含义:K是人工固定好的数字,假设数据集合可以分为K个簇,由于是依靠人工定好,需要一点先验知识 

     两者联系

    都包含这样的过程,给定一个点,在数据集中找离它最近的点。即二者都用到了NN(Nears Neighbor)算法,一般用KD树来实现NN。

    转载于:https://www.cnblogs.com/Vancuicide/p/10497181.html

    展开全文
  • 这两种算法之间根本区别是,Kmeans本质上是无监督学习而KNN是监督学习。Kmeans是聚类算法,KNN是分类(或回归)算法。 Kmeans算法把一个数据集分割成簇,使得形成簇是同构,每个簇里点相互靠近。该算法试图...
  • KNNKmeans

    2015-07-15 17:31:31
    2、KNN和K-Means的区别有哪些? 3、K-Means有哪些缺陷? K-Means介绍 K-means算法是聚类分析中使用最广泛的算法之一。它把n个对象根据他们的属性分为k个聚类以便使得所获得的聚类满足:同一聚类中的对象...
  • 1. kmeanskmeans(k均值聚类算法)可以实现发现数据集k个聚类算法,每个聚类均以其质心表示。kmeans步骤:(1)随机找到k个点作为质心(种子);(2)计算其他点到这k个种子距离,并选择最接近一个作为该点类别;...
  • 关于有监督学习无监督学习的区别,在第5课里有过讲解。在此,进一步说明下。 有监督学习(Supervised Learning) 所谓有监督学习,即: 训练数据同时拥有输入变量($x$)输出变量($y$); 用一个算法把从输入...
  • KNN Kmeans原理与不同

    2017-09-03 18:12:49
    knn k-means的区别和特点
  • 目录(?)[-] K-Means介绍 K-Means 算法 k-means算法选择初始seeds的基本思想就是初始的聚类中心之间的相互距离要尽可能的远k-means代码...KNNK-Nearest Neighbor介绍KNN和K-Means的区别 K-Means介绍
  • KNN和K-means的区别

    2020-06-24 00:01:50
    目前理解: KNN,同一类可能有好几个簇 Kmeans,同一个类可能只有一个簇,因为一般来说,如果我们...但是忽略了,有可能某一类,是分布在两个不同的簇,此时,Kmeans的效果可能就不好。 有待用数据进行验证。 ...
  • 如果从功能上来划分,sklearn 可以实现分类、聚类、回归、降维、模型选择预处理等功能。这里我们使用是 sklearn 聚类函数库,因此需要引用工具包,具 KMeans(n_clusters=8, init='k-means++', n_init=10, max_...
  • 最先接触时,对KNN,Kmeans还不够深入了解,慢慢的才知道,KNN是有监督学习和Kmeans是无监督学习的区别。废话不多说,KNN算法又叫K-近邻算法,其分类思想是测量不同特征值之间的距离从而进行分类。K近...
  • KNN算法概述

    2019-11-28 19:56:44
    KNN可以说是最简单分类算法之一,同时,它也是最常用分类算法之一,注意KNN算法是有监督学习中分类算法,它看起来另一个机器学习算法Kmeans有点像(Kmeans是无监督学习算法),但却是有本质区别的。...
  • KNN可以说是最简单分类算法之一,同时,它也是最常用分类算法之一,注意KNN算法是有监督学习中分类算法,它看起来另一个机器学习算法Kmeans有点像(Kmeans是无监督学习算法),但却是有本质区别的。...
  • KNN可以说是最简单分类算法之一,同时,它也是最常用分类算法之一,注意KNN算法是有监督学习中分类算法,它看起来另一个机器学习算法Kmeans有点像(Kmeans是无监督学习算法),但却是有本质区别的。...
  • k-means算法是非监督聚类最常用一种方法,因其算法简单很好适用于大样本数据,广泛应用于不同领域,本文详细总结了k-means聚类算法原理 。目录1. k-means聚类算法原理2. k-means聚类算法步骤3. k-means++聚类...
  • 分类算法_knn算法

    2021-01-02 13:27:29
    KNN可以说是最简单分类算法之一,同时,它也是最常用分类算法之一,注意KNN算法是有监督学习中分类算法,它看起来另一个机器学习算法Kmeans有点像(Kmeans是无监督学习算法),但却是有本质区别的。...
  • KNN可以说是最简单分类算法之一,同时,它也是最常用分类算法之一,注意KNN算法是有监督学习中分类算法,它看起来另一个机器学习算法Kmeans有点像(Kmeans是无监督学习算法),但却是有本质区别的。...
  • KMeans算法究竟是什么? KMeans 算法接受输入量 k ;然后将n个数据对象划分为 k个聚类以便使得所获得聚类满足:同一聚类中对象相似度较高;...KMeans和KNN这两种算法区别在哪呢? 其实很简单,KMe...
  • 【ML基石】K-Means与KNN

    2019-05-23 18:34:13
    k-means聚类算法原理总结 KmeansKmeans++和KNN算法比较 机器学习之深入理解K-means、与KNN算法区别及其代码实现 机器学习_基于距离算法KNN与K-Means
  • K-Means和KNN区别KNN是监督学习分类算法,有对应类别输出。 KNN基本不需要训练,对测试集里面点,只需要找到在训练集中最近k个点,用这最近k个点类别来决定测试点类别。 K-Means是无监督学习...
  • KNN可以说是最简单分类算法之一,同时,它也是最常用分类算法之一,注意KNN算法是有监督学习中分类算法,它看起来另一个机器学习算法Kmeans有点像(Kmeans是无监督学习算法),但却是有本质区别的。...
  • KNN可以说是最简单分类算法之一,同时,它也是最常用分类算法之一,注意KNN算法是有监督学习中分类算法,它看起来另一个机器学习算法Kmeans有点像(Kmeans是无监督学习算法),但却是有本质区别的。...
  • KNN可以说是最简单分类算法之一,同时,它也是最常用分类算法之一,注意KNN算法是有监督学习中分类算法,它看起来另一个机器学习算法Kmeans有点像(Kmeans是无监督学习算法),但却是有本质区别的。...
  • KNN可以说是最简单分类算法之一,同时,它也是最常用分类算法之一,注意KNN算法是有监督学习中分类算法,它看起来另一个机器学习算法Kmeans有点像(Kmeans是无监督学习算法),但却是有本质区别的。...
  • KNN可以说是最简单分类算法之一,同时,它也是最常用分类算法之一,注意KNN算法是有监督学习中分类算法,它看起来另一个机器学习算法Kmeans有点像(Kmeans是无监督学习算法),但却是有本质区别的。...
  • k-means算法是非监督聚类最常用一种方法,因其算法简单很好适用于大样本数据,广泛应用于不同领域,本文详细总结了k-means聚类算法原理 。目录1. k-means聚类算法原理2. k-means聚类算法步骤3. k-means++聚类...
  • 1、KNN和kmeans聚类有什么区别? 这两种算法本质区别是,kmeans本质上是无监督,而KNN本质上是有监督 。kmeans是一种聚类算法,而KNN是分类算法。 2、机器学习中什么时候需要正则化? 当模型显示出过拟合/...

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

knn和kmeans的区别