ML:非监督学习之 聚类 之 2 DBSAN聚类(skearn.cluster.dbscan))

一、算法图解

DBSCAN:Dense-Based Spatial Clustering of Applications with Noise(基于密度的&带噪点的空间聚类应用方法)

举个栗子:
ML:非监督学习之 聚类 之 2 DBSAN聚类(skearn.cluster.dbscan))_第1张图片1. 此处潜在设定条件:Min_smaples(或者叫MinPoints / Minpts)= 3;
2. 划分为QMP3个点、SOR3个点为圆心的圆内的点,共计2类;剩余的点为Noise(噪点)
3. 核心点:MPOR4个,因为以“Eps邻域”(即圆的半径)的范围内,样本点个数>=3(即 Min_samples);
4. 边界点:2个cluster中,除QMPSOR6个点之外的点;

二、sklearn官方文档链接
sklearn.cluster.dbscan(
X,                     # 一个feature数组,shape为(n_samples, n_featrues),或者是 当`metric='precomputed'`的样本间距离数组;
eps=0.5,               # 见上边例子
min_samples=5,         # 见上边例子
metrics='minikowski',  
metric_params=None,
algorithm='auto',
leaf_size=30,
p=2,
sample_weight=None,
n_jobs=None
)
三、优缺点
  • 优点
  1. 与KMeans相比,不需要事先设定cluster数;
  2. 与KMeans相比,可以发现任意形状的cluster;
  3. 同时,DBSCAN能够识别出噪点;
  4. DBSCAN对于数据库中样本的顺序不敏感,即pattern的输入顺序对结果的影响不大。但是,对处于cluster边界的样本,可能会根据那个cluster优先被探测到而归属有所摆动;
  • 缺点
  1. 当数据量增大时,要求较大的内存支持,I/O消耗也很大;
  2. DBSCAN不能很好的反映高维数据,算法聚类效果依赖于距离公式的选取(实际应用中常用欧式距离);
  3. 如果样本呢的密度不均匀、cluster的间距又很大的时候,聚类质量不好(参见 刘建平Pinard的博客 )
  4. DBSCAN不能很好反映数据集已变化的密度;

你可能感兴趣的:(python,sklearn,dbscan,聚类,机器学习算法)