Py学习  »  机器学习算法

机器学习实战(16)—— K-Means 算法原理部分

人工智能爱好者社区 • 5 年前 • 444 次点击  

👇点击关注公众号👇

第一时间获取人工智能干货内容


聚类问题是什么?


聚类问题的特点:

没有正确的答案(标签)

依靠自身属性相似度,物以类聚


如何判断相似度?

用某种距离作为聚类的依据,这种距离越近,则相似度越高,则可以考虑为同一类。


图形标记没有其他意思(因为是无答案,无标签的)


这里聚类使用的是欧式距离



K-means聚类算法原理:


事先确定常数K,常数K意味着最终的聚类类别数。

(1)随机选定初始点为质心

(2)通过计算每一个样本与质心之间的相似度(这里为欧式距离),将样本点归到最相似的类中

(3)重新计算每个类的质心(即为类中心)

 重复(2)、(3)的过程,直到达到规定迭代次数(例如400次)

 或者质心基本不改变(通过设定一个变化阈值)

 最终就确定了每个样本所属的类别以及每个类的质心。


假设K=3,一 开始随机选了三个中心。



将每个点与三个中心计算欧式距离,将其归入距离最近的中心类。



然后,重新计算每个群的中心(均值位置)

然后重复(2)、(3)过程



算法缺点:


(1)由于每次都要计算所有的样本与每一个质心之间的相似度,故在大规模的数据集上,K-Means算法的收敛速度比较慢。

(2)一开始要人为给定K值。

(3)如果起始点选的不好,会聚类较差。


k既然是人工取值的,那取多少比较好呢?    

常用方法:肘方法



选择曲线拐点部分作为 K 的选择参考,如下图可以选 K 为 5。


还有轮廓系数的方法,大家可以了解下。


这就是 K-Means 聚类算法的原理部分,是不是很简单呢?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/116244