knn和kmeans的区别

文/夜满月
专题:区别

knn属于监督学习,类别是已知的,通过对已知分类的数据进行训练和学习,找到这些不同类的特征,再对未分类的数据进行分类。kmeans属于非监督学习,事先不知道数据会分为几类,通过聚类分析将数据聚合成几个群体。

knn和kmeans的区别

1.KNN算法是分类算法,分类算法肯定是需要有学习语料,然后通过学习语料的学习之后的模板来匹配我们的测试语料集,将测试语料集合进行按照预先学习的语料模板来分类

2Kmeans算法是聚类算法,聚类算法与分类算法最大的区别是聚类算法没有学习语料集合。

K-means算法是聚类分析中使用最广泛的算法之一。它把n个对象根据他们的属性分为k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。

Kmeans算法的缺陷

聚类中心的个数K 需要事先给定,但在实际中这个 K 值的选定是非常难以估计的,很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适

Kmeans需要人为地确定初始聚类中心,不同的初始聚类中心可能导致完全不同的聚类结果。(可以使用Kmeans++算法来解决)

针对上述第2个缺陷,可以使用Kmeans++算法来解决

K-Means ++ 算法

k-means++算法选择初始seeds的基本思想就是:初始的聚类中心之间的相互距离要尽可能的远。

从输入的数据点集合中随机选择一个点作为第一个聚类中心

对于数据集中的每一个点x,计算它与最近聚类中心(指已选择的聚类中心)的距离D(x)

选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点,被选取作为聚类中心的概率较大

重复2和3直到k个聚类中心被选出来

利用这k个初始的聚类中心来运行标准的k-means算法

从上面的算法描述上可以看到,算法的关键是第3步,如何将D(x)反映到点被选择的概率上,一种算法如下:

先从我们的数据库随机挑个随机点当“种子点”

对于每个点,我们都计算其和最近的一个“种子点”的距离D(x)并保存在一个数组里,然后把这些距离加起来得到Sum(D(x))。

然后,再取一个随机值,用权重的方式来取计算下一个“种子点”。这个算法的实现是,先取一个能落在Sum(D(x))中的随机值Random,然后用Random -= D(x),直到其<=0,此时的点就是下一个“种子点”。

重复2和3直到k个聚类中心被选出来

利用这k个初始的聚类中心来运行标准的k-means算法

小编推荐

1.英一英二难度差距有多大 二者有哪些区别

2.技校单招和高中单招一样吗 二者有什么区别

3.强基计划和统招哪个好 二者有何区别

4.强基计划和普通录取的区别 有哪些不同

5.走单招和考上大专有什么区别 有哪些不同

6.单招和专科的学历一样吗 有区别吗

7.乌克兰语和俄语的区别 哪个好学

8.need to do和need doing的区别是什么

下载文档

猜你喜欢

提高英语成绩的有效方法 有什么窍门

24-09-20

提高英语听力的小窍门 有哪些技巧

24-09-20

如何提高英语口语能力 有什么方法技巧

24-09-20

国庆节用英语怎么说 如何用英文介绍国庆节

24-09-19

高考英语知识点归纳总结 语法知识点有哪些

24-09-18

fall的用法有哪些 具体含义是什么

24-09-17

permit的用法和短句例句 具体怎么用

24-09-17

英语时间的表达方式有哪些 有哪几种表达方法

24-09-17