欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

KNN和Kmeans分析

时间:2023-05-17

KNN、Kmeans是常用机器学习算法,但也经常弄混。本文将详细介绍这两种算法含义、实现过程、用途、区别等方面进行详细讲解。

1、KNN

属于监督学习,属于分类学习(需要进行训练)。最简单粗暴就是将预测点与所有点距离计算,然后保存并排序,选出前面K个值看看哪些类别比较多,则预测的点属于哪类。

(1) 流程

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

a、计算已知类别数据集中的点与当前点之间距离(曼哈顿距离计算、欧式距离计算)

b、按照距离递增次序排序

c、选取与当前点距离最小的k个点(k取值依据:通过交叉验证(将样本数据按照一定比例,拆分出训练用的数据和验证用的数据,比如6:4拆分出部分训练数据和验证数据),从选择一个较小的K值开始,不断增加K的值,然后计算验证集合的方差,最终找到一个比较合适的K值)

d、确定前K个点所在类别的出现概率

e、返回前k个点出现频率最高的类别作为当前点的预测分类

2、KMeans

属于聚类学习,类别的个数是人为给定的,如果让机器自己去找类别的个数,通过一次次重复这样的选择质心-计算距离后分类-再次选择新质心的流程,直到我们分组之后所有数据都不会再变化,就得到最终的聚合结果。

(1) 流程

a、随机选取K个质心(K值取决于想要聚成几类)

b、计算样本到质心的距离,距离质心距离近的归为一类,分为k类

c、求出分类后的每类的新质心

d、再次计算样本到新质心的距离,距离质心距离近的归为一类

e、判断新旧聚类是否相同,如果相同就代表已经聚类成功,如果没有就循环2~4步骤直到相同

3、KMeans++

KMeans的两个缺陷: KMeans聚类中心的个数K需要事先给定,但在实际中这个K值的选定是非常难以估计的;KMeans需要人为地确定初始聚类中心,不同的初始聚类中心可能导致完全不同的聚类结果。(KMeans++解决KMeans的两个缺陷。)

(1)流程

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

a、给定初始点的集合D

b、随机从点集D中选择一个点作为初始的中心点

c、计算每一个点到最近中心点的距离Si

d、求和Si得到Sum

e、取随机值Random(0

f、循环点集D,做Random-=Si运算直到Random<0,那么点i就是下一个中心点

g、循环c~f,直到取出所有的K个中心点

h、进行K-means算法

 

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。