【机器学习】非监督学习初探—聚类
非监督学习
机器学习有两种,一种是监督学习,另一种是非监督学习。监督学习就是我告诉计算机你把班上同学分个类,分类标准是按照性别,男生和女生;非监督分类就是告诉计算机你自己去把班上同学分个类吧,我不告诉你分类标准。
没有分类标准该如何分类呢?这就需要引入一个新的方法:聚类(Clustering)
聚类
有两个人,一个叫做Sebastian,一个叫做Katie,这两个人对电影有不同的喜好,有一些电影Sebastian认为很好,但是Katie不喜欢看,就是下图左上角的那一堆;而又有一些电影Katie认为很好,但是Sebastian不喜欢看,就是右下角的那一堆。
有了两堆数据,接下来我们就只用把第一堆命名为Class A,第二堆命名为Class B,而不需要知道他们具体是按照电影品味分的。
K-均值 (K-Means)
聚类算法中使用最广泛的就是K-均值算法。
举个例子,下图的红色数据点,按照它们到蓝色点A和蓝色B的距离划分,离A更近的划为一类,可以连接AB,然后取中垂线,在A那边一侧的点就是距离A更近,而距离B更远的点,可以划分为A类
而一个完整的K-均值算法是一个反复迭代的过程,上面的那个过程要不断的进行,具体怎么操作呢?
1.就是面对一大群的数据,假如我们想要分成2类,那么我们就随便在图上找两个点(用黄色和红色的▲来表示)作为分类的中心点,然后计算每一个数据到这两个中心点的距离,距离红色近黄色远的就分类到红色,,距离黄色近红色远的就分类到黄色,直到所有的分类都全部完成
2.把所有红色组数据的平均值作为新的红色中心点的坐标,所有黄色组数据的平均值作为新的黄色中心点的坐标
3.以新的中心点再次进行分类,依然是距离红色近黄色远的就分类到红色,,距离黄色近红色远的就分类到黄色,直到所有的分类都全部完成
4.如此反复,直到所有的数据分组都不再发生变化为止(前面的过程中有些数据有的时候分到了红色组,有的时候分到了黄色组)
我们可以看一个动态的过程,网址是
http://www.naftaliharris.com/blog/visualizing-k-means-clustering/
选择 randomly,Guassian Mixture,然后添加3个中心点,经过多次反复聚类,最终确定中心点的位置
Sklearn中的K-均值
知道了什么K-均值之后就可以直接到Sklearn页面上去查看相关代码了。
点击Sklearn.cluster.KMeans来查看
其中有三个参数很重要:
n_clusters=8:
意思就是聚类默认分成8组,但是实际上我们经常要根据具体的数据来设定具体的数值,比方说前面的gif图画中,我们就分成了3组,所以这个数值是需要自己调整的
max_iter=300:
这个意思就是说最多进行多少次的调整中心点,其实往往我们的数据进行不到300次分组就已经确定下来了
n_init=10:
对数据初始化多少次,这个参数比较难以理解,为什么要初始化很多次呢?因为即使是同样的数据,设置同样数量的中心点,依然可能得到不同的结果。这就是K-均值的局限,所以需要初始化很多次,来查看不同的结果
这里给出一个同样是均匀分布的例子
好啦,这就是非监督学习的中的K-均值聚类算法
你的赞是对作者莫大的支持哦~????
如果你想看其他的关于机器学习的一些知识,可以关注我的知乎专栏,我是一个机器学习小白,初学者总会遇到各种各样的困难,我会从初学者的角度把每一个坑都给你仔仔细细的讲明白咯~