定义
DBSCAN 全称为 Density-Based Spatial Clustering of Applications with Noise,一种密度聚类算法。
$\epsilon-领域$:指以某个对象为中心,$\epsilon$ 为半径的空间。其中 $\epsilon>0$ 为半径值。
$min\_pts$:密度阈值,用于定义核心对象。
核心对象:某个对象的 $\epsilon-领域$ 中对象数量至少包含 $min\_pts$ 个对象。
密度直达:在某个对象 $x$ 的 $\epsilon-领域$ 任意对象,为 $x$ 的密度直达对象。
密度可达:若存在序列 $x_1, x_2, .., x_n$,其中 $x_i 为 x_{i-1}$ 的密度直达对象,则称 $x_1$ 与 $x_n$ 密度可达。
密度相连:若对象 $x_1, x_2$ 均由对象 $x_k$ 密度可达,则称 $x_1, x_2$ 密度相连。
目标
基于密度可达关系,分别找出所有密度相连样本集合。
核心思想
输入:样本、$eps$(半径)、$min\_pts$
遍历样本,找出所有核心对象
任意选择一个核心对象,找到该对象所有密度可达的对象,并将其归为一类
从剩余的核心对象中移除以归类的对象
重复步骤 2 和步骤 3 ,直到所有核心对象都被归类
算法实现
需要使用到的库:numpy
定义欧式距离函数,公式为 $ d(a, b) = \sqrt{ \sum_{i=1}^{n} (a_i - b_i)^2