聚类算法,不同于分类,分类属于有监督学习,聚类属于无监督学习,聚类的作用就是将有共同属性的数据会会汇聚到一起,成为一类,我们要做的是对这一类的数据进行分析。这就好像自编码过程把图像特征压缩到几个维度的向量是一样的道理,目的是通过做以区分的特性。
k-means应用神经算法中的梯度下降,先确定k个类,确定k个中心点,计算数据到每一个中心点距离,被分到距离最近的中心点的类,对于每个类再重新计算到每个点距离均值算出新的中心点,如此往复直到均方误差不再变化(变化微小)。
k-means优点是简洁快速(颇有遗传算法的逻辑),但是缺点是k需要自己设置,k值设定的权衡比较麻烦。
数据生成
今天我们用sklearn的make_blobs生成数据:
from sklearn.datasets import make_blobs
使用方法,直接官网截图了: