DBSCAN
【算法思路】
- 输入epsilon和minPoints初始值,确定核心对象集合
- 遍历整个样本集数据,对没访问过的核心对象:
- 在该核心对象的eps范围内,如果点没被访问过,给他分配当前簇号
- 继续搜寻是核心对象的那些样本点,给他分配当前簇号,并将其eps范围内的点加入栈
- 对栈内的点继续搜寻范围内的核心对象,访问过的就出栈,直到栈空
- 递增簇号
- 对这些点进行第2步的步骤
【计算实例】
【计算草稿】
核心对象:[2, 3, 8]
【关于eps取值】
如果eps过大,容易导致距离近且密度大的核心对象被划分为同一个簇;
如果eps过小,那eps范围内点减少,容易使很多点没有办法进入密度可达范围,容易被认为是噪声点。
【总结】就是不断搜寻核心对象的密度可达范围,直到没办法继续扩展,就对下一个核心对象继续扩展。没有被扩展的点就是噪声点。
【参考】
原理:机器学习笔记(十)聚类算法DBSCAN原理和实践
也可以看这篇掌握算法大致思路:常用聚类算法
算法计算详细步骤:基于密度的聚类算法DBSCAN原理与实现
可视化演示参考:dbscan可视化