2019-10-14 opencv机器学习3-k均值聚类1-理解k均值聚类(K-Means Clustering )

64 篇文章 3 订阅

官网参见https://docs.opencv.org/3.4.1/de/d4d/tutorial_py_kmeans_understanding.html

自学参见https://zhuanlan.zhihu.com/p/32830192

T恤尺寸问题

想象有一家公司要上市一款新T恤。显然需要生成不同尺寸的T恤以满足不同用户的需求。所以这家公司需要收集很多人身高和体重信息,并把它们绘制成下图。
在这里插入图片描述
公司不可能生成所有尺寸的T恤。他们会把尺寸分为小、中、大3类以适用所有人。此时就可以使用k均值聚类算法来得到最佳分类的3个组,满足所有人的需求。如果做不到,那就需要分更加多的组,比如5组,或者更多。
在这里插入图片描述

k均值聚类如何工作

该算法是一个迭代的过程。我们用一些图片一步一步解释。
观察下图(你就把它想象成T恤问题),我们需要把数据归入2组。
在这里插入图片描述
step1.算法随机选择2个质心C1和C2。(有时候可以选择数据中的任意2个作为质心)
step2.计算测试数据每个点到2个质心的距离。如果距离C1近,那么就标记为’0’;如果距离C2近,那么就标记为’1’。(如果质心更多,那么可以依次标记’2’,'3’等)
本例中,我们标记‘0’用红色表示,标记‘1’用蓝色表示。
在这里插入图片描述
step3.分别计算所有蓝色点和所有红色点到各自质心的平均距离,并以此产生2个新的质心。(上面图片只是为了演示说明而已,并不代表实际数据)

然后重复第二步,依据新质心重新标记所有测试数据的分类,结果如下
在这里插入图片描述
重复迭代第二步和第三步,直至2个质心收敛稳定下来(也可以通过设置迭代次数,或者达到一定精确度来停止迭代)。现在测试数据到质心的距离之和达到最小。或者简单说,C1到所有红色点的距离之和最小,C2到所有蓝色点的距离之和最小。

m i n i m i z e [ J = ∑ A l l R e d P o i n t s d i s t a n c e ( C 1 , R e d P o i n t ) + ∑ A l l B l u e P o i n t s d i s t a n c e ( C 2 , B l u e P o i n t ) ] minimize[J=\displaystyle\sum_{AllRed_Points}distance(C1,Red_Point)+\displaystyle\sum_{AllBlue_Points}distance(C2,Blue_Point)] minimize[J=AllRedPointsdistance(C1,RedPoint)+AllBluePointsdistance(C2,BluePoint)]
最后结果如下(分类和质心)
在这里插入图片描述
这个过程就是k均值聚类直观的理解。更多细节和算法解释,可以参考任何一个介绍机器学习的文档。

这里说的是k均值聚类的基础。还有很多算法变化,如何选取好的初始质心,怎样加速迭代过程等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值