K-Means(K均值)聚类算法

K-mean

​ 初始数据集如下图所示,数据集未做任何标记labels
K-Means(K均值)聚类算法_第1张图片
要求将其分为两簇,K均值算法的操作原理为:
K-Means(K均值)聚类算法_第2张图片
随机挑选两个点作为聚类中心(cluster centroids),K-均值算法是一个迭代过程,分为两部分,第一为簇分类,第二为移动聚类中心。
​ 所谓的的簇分类是将图中所有的绿色样本点根据其距离蓝色、红色中心点距离,分配到簇中。如下图:
K-Means(K均值)聚类算法_第3张图片
​ 接下来将染色的点计算它们的平均值(平均下来的位置)也就是新的样本中心点,此时将相应的聚类中心移动到这个均值处。
K-Means(K均值)聚类算法_第4张图片
然后根据新的样本中心点进行染色
K-Means(K均值)聚类算法_第5张图片
继续计算新的样本中心点
K-Means(K均值)聚类算法_第6张图片
K-Means(K均值)聚类算法_第7张图片
​ 继续迭代,有:
K-Means(K均值)聚类算法_第8张图片
直到样本中心点不再改变
K-Means(K均值)聚类算法_第9张图片
此时继续迭代,聚类中心将不会再做改变。

​ K-均值算法,输入有两个部分:K(聚类的个数):number of clusters,训练集x(1),x(2),…,x(m)x(1),x(2),…,x(m) 。

​ 随机初始化K个聚类中心μ1,μ2,…,μK∈Rnμ1,μ2,…,μK∈Rn,重复一下迭代:

{ for i=1:m

​ c(i)=从1到K的所有聚类中心索引(index)中最接近于x(i)的索引,即—c(i)=mink||x(i)−μk||2c(i)=mink||x(i)−μk||2

​ for k=1:K

​ μkμk=对于接近于聚类k点处平均值

}

可能存在一种情况,即某一聚类中心的最近点数位零,此时可以删除即变为K-1个簇。此外k-均值对于不易分离的聚类有很好的效果,如下图,对于不同身高、体重的人群衬衫的尺寸是相差很多的,若你是一家服装设计公司,利用k均值进行聚类分析,形成3个簇,即三种类,可以为尺寸设计方便很多,这也是市场细分–Market segmentation的一个隔离。
K-Means(K均值)聚类算法_第10张图片
算法步骤:
(1) 首先我们选择一些类/组,并随机初始化它们各自的中心点。中心点是与每个数据点向量长度相同的位置。这需要我们提前预知类的数量(即中心点的数量)。
(2) 计算每个数据点到中心点的距离,数据点距离哪个中心点最近就划分到哪一类中。
(3) 计算每一类中中心点作为新的中心点。
(4) 重复以上步骤,直到每一类中心在每次迭代后变化不大为止。也可以多次随机初始化中心点,然后选择运行结果最好的一个。

1.原文:https://www.cnblogs.com/SrtFrmGNU/p/7160718.html
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
2.原文:https://blog.csdn.net/Katherine_hsr/article/details/79382249
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(K-Means(K均值)聚类算法)