DBSCAN聚类算法概述:
DBSCAN属于密度聚类算法,把类定义为密度相连对象的最大集合,通过在样本空间中不断搜索最大集合完成聚类。
DBSCAN能够在带有噪点的样本空间中发现任意形状的聚类并排除噪点。
DBSCAN算法不需要预先指定聚类数量,但对用户设定的参数非常敏感。
当空间聚类的密度不均匀、聚类间距差相差很大时,聚类质量较差。
DBSCAN算法基本概念:
核心对象:如果给定对象的半径eps邻域内样本数量超过阈值min_samples,则称为核心对象。
边界对象:在半径eps内点的数量小于min_samples,但是落在核心点的邻域内。
噪声对象:既不是核心对象也不是边界对象的样本。
直接密度可达:如果对象q在核心对象p的eps邻域内,则称q从p出发是直接密度可达的。
密度可达:集合中的对象链p1、p2、p3、...、pn,如果每个对象pi+1从pi出发都是直接密度可达的,则称pn从p1出发是密度可达的。
密度相连:集合中如果存在对象o使得对象p和q从o出发都是密度可达的,则称对象p和q是互相密度相连的。
DBSCAN聚类算法工作过程:
1)定义邻域半径eps和样本数量阈值min_samples。
2)从样本空间中抽取一个尚未访问过的样本p。
3)如果样本p是核心对象,进入第4)步;否则返回第2)步。
4)找出样本p出发的所有密度可达对象,构成一个聚类Cp(该聚类的边界对象都是非核心对象),并标记这些对象为已访问。
5)如果全部样本都已访问,算法结束;否则返回第2)步。
Python+sklearn使用DBSCAN聚类算法参考代码:
聚类结果图一:
聚类结果图二:
聚类结果图三:
领取专属 10元无门槛券
私享最新 技术干货