第一个无监督学习算法,K-均值,这是一个非常普及的聚类算法,实现起来也比较简单,学习了Andrew Ng的视频讲解,直接纪录一下重点吧。
首先训练集合选取了sklearn自带的多类单标签数据集make_blobs
初始化变量有m:训练集的个数,Feature:训练集的维度,K:要分成几类,u:一个K*Feature维度的数组,储存聚类中心,c:储存每次迭代的分类结果,uDict:储存分类结果的字典
总结:因为数据量比较少,根据观察畸变函的结果数,基本迭代三次就分类成功了,说明这是一个非常优秀的算法。
1 | import numpy as np |
执行结果:
0.8093064467708514
0.2770795968584342
0.17288024424551154
0.17288024424551154
0.17288024424551154
my kemans cluster enters: [[ 0.95712283 -1.02057236]
[ 1.01281413 1.06595402]
[-1.03507066 -1.03233287]]
sklearn kemans cluster enters: [[ 0.95712283 -1.02057236]
[ 1.01281413 1.06595402]
[-1.03507066 -1.03233287]]
算法成功的从+号的位置移动到五角星的位置。