聚类分析就是在没有给定类别标签的情况下,根据数据相似性来进行分组的方法,是一种无监督的算法。聚类根据数据自身的距离或相似度将其划分为若干组,划分的原则是组内距离最小化而组间距离最大化。
常用聚类方法
类别 | 包括的主要算法 |
划分方法 | k-means(k-平均)、k-medoids(k-中心点)、Clarans(基于选择的算法) |
层次分析方法 | BIRCH(平衡迭代规约和聚类)、CURE(代表点聚类)、CHAMELEON(动态模型) |
基于密度的方法 | DSBCAN(基于高密度连接区域)、DENCLUE(密度分布函数)、OPTICS(对象排序识别) |
基于网格的方法 | STING(统计信息网络)、CLIOUE(聚类高维空间)、WAVE-CLUSTER(小波变化) |
基于模型的方法 | 统计学方法、神经网络方法 |
常用聚类分析算法
算法名称 | 算法描述 |
k-means | k-均值聚类,在最小化误差函数的基础上将数据划分为预定的类数k.原理简单,便于处理大量数据。 |
k-中心点 | k-均值算法对孤立点敏感性,k-中心点算法不采用簇中对象的平均值作为簇中心,而选用簇中离平均值最近的对象作为簇中心 |
系统聚类 |
系统聚类也称为多层次聚类,分类的单位由高到低呈树形结构,且所处的位置越低,其所包含的对象就越少,但这些对象间的共同 特征越多,该方法只适合在小数据量的时候使用,数据量大的时候速度会非常慢。 |
聚类主要函数列表
对象名 | 函数功能 | 所属工具箱 |
kmeans | k-均值聚类 | sklearn.cluster |
AffinityPropagation | 吸引力传播聚类,07年提出,几乎优于所有其他方法,不需要指定聚类数,但运行效率较低 | sklearn.cluster |
MeanShift | 均值漂移聚类算法 | sklearn.cluster |
SpectralClustering | 谱聚类,具有效果比k均值好,速度比k均值快等特点 | sklearn.cluster |
AgglomerativeClustering | 层次聚类,给出一颗聚类层次树 | sklearn.cluster |
DBSCAN | 具有噪声的基于密度的聚类方法 | sklearn.cluster |
BIRCH | 综合的层次聚类算法,可以处理大规模数据的聚类 | sklearn.cluster |
k-means聚类的过程:
1. 首先,我们选择一些类/组,并随机初始化它们各自的中心点。为了算出要使用的类的数量,最好快速查看一下数据,并尝试识别不同的组。中心点是与每个数据点向量长度相同的位置。
2. 通过计算数据点与每个组中心之间的距离来对每个点进行分类,然后将该点归类于组中心与其最接近的组中。
3. 根据这些分类点,我们利用组中所有向量的均值来重新计算组中心。
4. 重复这些步骤来进行一定数量的迭代,或者直到组中心在每次迭代后的变化不大。你也可以选择随机初始化组中心几次,然后选择看起来提供了最佳结果的运行。
计算
聚类方法 | 优点 | 缺点 |
k-means | 速度快,计算少 | 初始聚类随机,结果重复性差 |
参考资料:
1、python数据分析与挖掘实战
2、https://mp.weixin.qq.com/s/abD7Lk8V_c9WujzsmzTmgw