K-means与KNN聚类

偶尔会遇到聚类。以后一定要写一个通用的分类器,把用过的都封装成类,以便以后调用。

经常分不清楚K-means与KNN。前者叫K均值聚类,后者叫K近邻聚类。


K-means是无监督的聚类,即给定的数据都没有标签,根据其自身特性的相似程度来聚成K类。K是指定的某个经验常数。

K-means的过程为初始化、两步迭代与停止条件。

1. 初始化时,随机选K个点作为聚类中心即可。

2. 迭代更新

2.1 对所有顶点逐一聚类。把顶点们都聚到距离自己最近的那个聚类中心所代表的类中。这里的距离可以是欧氏距离,我觉得也可以定义其他方式的距离。

2.2 更新聚类中心。现在每个聚类里面都有了自己的成员,然而原先那个选定的(第一次迭代)或迭代而成(之后的迭代)的每个聚类中心,由于更新了本类成员,不一定还保持中心的位置。故再计算一次各个聚类的中心。计算中心的公式也可自定义。

3. 停止条件:当迭代一次后聚类中心变化范围不变或小于某个阈值即可。

K均值的“均值”应该取自对聚类中心更新的原则。

K-means的难度在于K值的确定与中心点的初始化。K值的确定要尽可能地贴近现实数据,中心点的初始化关系着迭代次数即收敛速度。


KNN是有监督的增量聚类,KNN的作用是在已经有了确定分类的数据集之后,对新来的某一个点,确定它的分类。

分类规则是,对新加入的这个点,按照某个距离公式,计算出离它最近的K个点,然后按照“从众”心理,把这个点归到K个最近邻点中最多数属于的类即可。或者计算这K个点中其他的某些特征,来计算这个新的点的特征。

K近邻算法重点就在于找到K个近邻。至于怎样找,找到之后怎样决定这个新的点的所属类别,就是可以自由发挥的一些地方了。


某一天,一定要把这些分类程序都写一遍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值