各类聚类算法优缺点汇总及python实现

一、方法名字

1.基于质心的算法

K均值算法
K均值算法的优点:
1)是解决聚类问题的一种经典算法,简单、快速
2)对处理大数据集,该算法保持可伸缩性和高效性
3)当簇接近高斯分布时,它的效果较好。
K均值算法的缺点:
1)在簇的平均值可被定义的情况下才能使用,可能不适用于某些应用;
2) 在 K-means 算法中 K 是事先给定的,这个 K 值的选定是非常难以估计的。很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适;
3) 在 K-means 算法中,首先需要根据初始聚类中心来确定一个初始划分,然后对初始划分进行优化。这个初始聚类中心的选择对聚类结果有较大的影响,一旦初始值选择的不好,可能无法得到有效的聚类结果;
4) 该算法需要不断地进行样本分类调整,不断地计算调整后的新的聚类中心,因此当数据量非常大时,算法的时间开销是非常大的;
5) 若簇中含有异常点,将导致均值偏离严重(即:对噪声和孤立点数据敏感);
6) 不适用于发现非凸形状的簇或者大小差别很大的簇。
模糊c均值聚类
https://blog.csdn.net/lyxleft/article/details/88964494
用三角不等式加速的K均值算法
https://blog.csdn.net/haimengao/article/details/29553767

2.层次聚类

BIRCH层次聚类
BIRCH层次聚类的优点
1)节约内存,所有的样本都在磁盘上,CF Tree仅仅存了CF节点和对应的指针。
2) 聚类速度快,只需要一遍扫描训练集就可以建立CF Tree,CF Tree的增删改都很快。
3) 可以识别噪音点,还可以对数据集进行初步分类的预处理
BIRCH层次聚类的缺点
1) 由于CF Tree对每个节点的CF个数有限制,导致聚类的结果可能和真实的类别分布不同.
2) 对高维特征的数据聚类效果不好。此时可以选择Mini Batch K-Means
3) 如果数据集的分布簇不是类似于超球体,或者说不是凸的,则聚类效果不好。
https://blog.csdn.net/Mbx8X9u/article/details/78910496

3.基于概率分布的算法

EM算法 期望最大化算法
https://blog.csdn.net/qq_17073497/article/details/81272704
https://blog.csdn.net/qq_43468729/article/details/84952202

4.基于密度的算法

DBSCAN算法(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)
DBSCAN的优点:
1) 可以对任意形状的稠密数据集进行聚类,相对的,K-Means之类的聚类算法一般只适用于凸数据
2) 可以在聚类的同时发现异常点,对数据集中的异常点不敏感。
3) 聚类结果没有偏倚,相对的,K-Means之类的聚类算法初始值对聚类结果有很大影响。
DBSCAN的缺点:
1)如果样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差,这时用DBSCAN聚类一般不适合。
2) 如果样本集较大时,聚类收敛时间较长,此时可以对搜索最近邻时建立的KD树或者球树进行规模限制来改进。
3)调参相对于传统的K-Means之类的聚类算法稍复杂,主要需要对距离阈值,邻域样本数阈值MinPts联合调参,不同的参数组合对最后的聚类效果有较大影响。
OPTICS算法(Ordering points to identify the clustering structure,排序点来识别聚类结构)
这个算法有效的解决了密度不同导致的聚类效果不好的问题。
Mean Shift算法 (均值漂移)基于核密度估计技术,是一种寻找概率密度函数极值点的算法
https://blog.csdn.net/stesha_chen/article/details/88827010

5.基于图的算法

谱聚类算法
谱聚类算法的优点
1)当聚类的类别个数较小的时候,谱聚类的效果会很好,但是当聚类的类别个数较大的时候,则不建议使用谱聚类;
2)谱聚类算法使用了降维的技术,所以更加适用于高维数据的聚类;
3)谱聚类只需要数据之间的相似度矩阵,因此对于处理稀疏数据的聚类很有效。这点传统聚类算法(比如K-Means)很难做到
4)谱聚类算法建立在谱图理论基础上,与传统的聚类算法相比,它具有能在任意形状的样本空间上聚类且收敛于全局最优解
谱聚类算法的缺点
1)谱聚类对相似度图的改变和聚类参数的选择非常的敏感;
2)谱聚类适用于均衡分类问题,即各簇之间点的个数相差不大,对于簇之间点个数相差悬殊的聚类问题,谱聚类则不适用;
https://blog.csdn.net/qq_24519677/article/details/82291867

二、各种方法在sklearn库中的调用

算法名称函数
K均值聚类算法from sklearn.cluster import KMeans
小批量K均值算法from sklearn.cluster import MiniBatchKMeans
BIRCH层次聚类ffrom sklearn.cluster import Birch
.EM算法from sklearn.mixture import GaussianMixture
DBSCAN算法from sklearn.cluster import DBSCAN
OPTICS算法from sklearn.cluster import OPTICS
Mean Shift算法from sklearn.cluster import MeanShift
谱聚类算法from sklearn.cluster import SpectralClustering

三、不同数据下聚类效果对比

数据1的距离对比
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过上述4组不同的数据可以简单的看出不同数据下各类聚类算法的聚类好坏程度。以便于根据不同的数据类型选择不同的聚类方式。

陈鑫您好!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值