knn和k-means小结

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

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。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
KNN(K-Nearest Neighbor)和K-Means是两种不同的机器学习算法,它们在问题类型、应用场景和算法过程上有所区别。 首先,KNN是一种监督学习算法,用于解决分类问题。它通过计算未知样本与最近的K个已知样本之间的距离,来确定未知样本所属的类别。KNN需要有标签的训练数据来进行分类。 而K-Means是一种非监督学习算法,用于解决聚类问题。它通过人为选定的K个聚类中心,计算样本与聚类中心之间的距离,将样本分配到离其最近的聚类中心所代表的类簇中。然后根据类簇内的所有点重新计算类簇的中心点,迭代进行分配和更新,直至类簇中心点不再变化或达到指定的迭代次数。 此外,KNN没有明显的训练过程,而K-Means需要迭代计算类簇中心点。KNN是根据最近的K个样本来判断未知样本的类别,而K-Means是根据样本与聚类中心的距离来进行聚类。 总结来说,KNN是一种用于分类问题的监督学习算法,而K-Means是一种用于聚类问题的非监督学习算法。它们在问题类型、应用场景和算法过程上有所区别。 #### 引用[.reference_title] - *1* [KNN(K近邻)和K-means(聚类)的区别](https://blog.csdn.net/weixin_43804047/article/details/128424463)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [面试回答:KNNK-Means的区别?](https://blog.csdn.net/qq_29168809/article/details/104221199)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [KNN和kmeans算法的区别](https://blog.csdn.net/skyllerone/article/details/126954351)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值