最近项目中用到了DBSCAN聚类算法,对该算法的参数和使用进行了相应了解并以此记录
调用:
from sklearn.cluster import DBSCAN
python源码附的基本原理:
简单来说该算法是一种基于密度的空间聚类算法,可将小于距离阈值的样本划分为同一簇,对包含相似密度集群的样本和具有噪声的数据有较好的效果。
参数选择:
eps:聚类的半径,默认为0.5. 此参数用于指定对选取点的多长距离的半径做聚类操作。选取大了会导致聚类的结果类数很多,选取小了会导致聚类的结果类数很少。实际选取需根据数据情况。
min_samples:最小样本数,默认为5.该参数表示以取样点设定半径范围内满足多少样本数为一聚类(包含取样点本身),一般都是从较小值开始尝试。
推荐一个算法可视化网站,对具体的实现过程进行了详细的动画讲解
其余参数详解:
metric:控制计算距离的度量方法,默认为欧氏距离,可选参数如l1距离、曼哈顿距离等,可根据实际情况进行选择
metric_params:距离度量函数的其他关键字参数(如所选度量函数需要时选择)
algorithm:计算距离的算法算法的选择,可选参数如下。算法区别主要在于高低维数据的使用场景,默认auto可自动选择。
leaf_size:如果使用BallTree或ckDTree算法时选择,用于指定叶子节点的大小,默认为30
p:用于使用曼哈顿距离时指定p值,默认为2(即欧几里得距离)
n_jobs:表示并行的工作数,默认为1,为在主流程下,可设置为-1,表示所有的processors可用
实际使用中需根据使用需求合理的设置相关参数,并进行相关参数的调优。
算法评估算法可分为类间评估和类外评估 ,区别在于是否能够得到数据对应的标签