主要聚类算法的分类
2020-01-16 本文已影响0人
清梦载星河
一、基于原型的聚类
基于原型的聚类,简称原型聚类。此类算法假设聚类结构能通过一组原型刻画,算法先对原型进行初始化,然后对原型进行迭代更新求解。
1.1 k 均值算法
k均值(k-means)算法是目前最著名、使用最广泛的聚类算法。K均值算法根据某个距离函数反复把数据划分到k个簇中,直到收敛为止,最常见的终止条件是误差平方和(SSE)局部最小。KMeans算法用簇中对象的平均值来表示划分的每个簇。
- 算法要求:给定的数据集和需要划分的数目k
- scikit-learn函数:
from sklearn.cluster import KMeans
1.2 k中心点算法
k中心点(K-Medoids)算法,类似k均值算法,区别在于,k均值算法的中心点是计算出来的,而k中心点用最靠近中心点的一个真实数据对象来代表该簇。
2. 基于密度的聚类
基于密度的聚类,简称密度聚类。此类算法假设聚类结构能通过样本分布的紧密程度确定。通常情况下,密度聚类算法从样本密度的角度来考察样本之间的可连接性,并给予可连接样本不断扩展聚类簇以获得最终的聚类结果。
2.1 DBSCAN
DBSCAN是一种著名的密度聚类算法,其原理是:只要邻近区域里的密度(对象的数量)超过了某个阈值,就继续聚类。DBSCAN还会根据一个密度阈值来控制簇的增长,在带有噪声的空间数据库里发现任意形状的聚类。其缺点主要是需要用户确定输入参数,对参数非常敏感。
- scikit-learn函数:
from sklearn.cluster import DBSCAN
2.2 OPTICS
OPTICS是DBSCAN的扩展算法,性能更好。
- scikit-learn函数:
from sklearn.cluster import OPTICS
3. 基于层次的聚类
层次聚类是在不同层次对数据集进行划分,直到满足某种收敛条件为止,从而形成树形的聚类结构。按照层次分解的形式不同,又可分为自底向上层次聚类和自顶向下层次聚类。
- 自底向上:一开始将每个对象作为单独的一类,然后相继合并与其相近的对象或类,直到所有小的类别合并成一个类。代表算法:AGNES。
- 自顶向下:一开始将所有对象置于一个簇中,在迭代的每一步中,类会被分裂成更小的类,直到最终每个对象在单独的类中。